   softmax_layer.GetTopsDims({out_dims}, {softmax_out_dims});
   size_t ce_out_dims[4];
   cel_layer.GetTopsDims({out_dims, out_dims}, {ce_out_dims});
+  size_t ce_loss_dims[4] = {batch_size, 1, 1, 1};
+
 
   Tensor<float>* in_tensor = Tensor<float>::CreateTensorGPU(in_dims);
   Tensor<float>* in_tensor_diff = Tensor<float>::CreateTensorGPU(in_dims);

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




  Tensor<float>* cel_out_tensor = Tensor<float>::CreateTensorGPU(ce_out_dims);
  Tensor<float>* cel_out_tensor_diff = Tensor<float>::CreateTensorGPU(ce_out_dims);
  Tensor<float>* cel_loss_diff = Tensor<float>::CreateTensorGPU(ce_loss_dims);

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

