   size_t ce_loss_dims[4] = {batch_size, 1, 1, 1};
   Tensor<float> * cel_top = Tensor<float>::CreateTensorGPU(ce_top_dims);
   Tensor<float> * cel_top_diff = Tensor<float>::CreateTensorCPU(ce_top_dims);
-  Tensor<float>* cel_loss_diff = Tensor<float>::CreateTensorGPU(ce_loss_dims);
+  Tensor<float> * cel_loss_diff = Tensor<float>::CreateTensorGPU(ce_loss_dims);
 
 
   printf("network finished setup: %3.1f ms \n", stopTimer());

  Tensor<float> * relu1_top = Tensor<float>::CreateTensorGPU(relu1_top_dims);
  Tensor<float> * relu1_top_diff = Tensor<float>::CreateTensorGPU(relu1_top_dims);

  Conv2D<float> conv2(5,5,32,32,1, new GaussianKernelInitializer<float>(0.1), SAME);
  size_t conv2_top_dims[4];
  conv2.GetTopsDims({relu1_top_dims}, {conv2_top_dims});
  Tensor<float> * conv2_top = Tensor<float>::CreateTensorGPU(conv2_top_dims);

    cudaStatus = cudaGetLastError();
    checkCudaErrors(cudaStatus);

    conv3.UpdateWb(lr);
    cudaStatus = cudaGetLastError();
    checkCudaErrors(cudaStatus);


    relu2.Backward({relu2_top}, {relu2_top_diff}, {pool2_top}, {pool2_top_diff});
    cudaStatus = cudaGetLastError();
    checkCudaErrors(cudaStatus);
