 
   Tensor<float>* out_tensor = Tensor<float>::CreateTensorCPU(out_dims);
   Tensor<float>* out_tensor_diff = Tensor<float>::CreateTensorCPU(out_dims);
+  Tensor<float>* softmax_out_tensor = Tensor<float>::CreateTensorCPU(softmax_out_dims);
 
   Tensor<float>* y_out = Tensor<float>::CreateTensorCPU(out_dims);
 


    h1.Forward({in_tensor}, {h1_tensor});
    out.Forward({h1_tensor}, {out_tensor});

    for(int b = 0; b < batch_size; b++) {
      for(int i = 0; i < out_nodes; i++) {

    h1.Backward({h1_tensor}, {h1_tensor_diff}, {in_tensor}, {in_tensor_diff});

    printf("out activations\n");
    show_fc_tensor_cpu(softmax_out_tensor);

    /*  
    printf("h1 activations\n");
