   cudaFree(out_tensor_diff);
   cudaFree(softmax_out_tensor);
   cudaFree(softmax_out_tensor_diff);
+  cudaFree(cel_out_tensor);
+  cudaFree(cel_out_tensor_diff);  
 }
 
 

  Tensor<float>* softmax_out_tensor = Tensor<float>::CreateTensorGPU(softmax_out_dims);
  Tensor<float>* softmax_out_tensor_diff = Tensor<float>::CreateTensorGPU(softmax_out_dims);

  Tensor<float>* y_out = Tensor<float>::CreateTensorGPU(out_dims);

  std::vector<std::vector<float>> x_train = {{0,1},{0,0},{1,0},{1,1}};

  out.GetTopsDims({h1_dims}, {out_dims});
  size_t softmax_out_dims[4];
  softmax_layer.GetTopsDims({out_dims}, {softmax_out_dims});
  size_t ce_out_dims[4];
  cel_layer.GetTopsDims({out_dims}, {ce_out_dims});


  Tensor<float>* in_tensor = Tensor<float>::CreateTensorGPU(in_dims);
  Tensor<float>* in_tensor_diff = Tensor<float>::CreateTensorGPU(in_dims);
