Could you check the output of fc1 and its values?
The printed values of x = torch::leaky_relu(fc2->forward(x)); have a huge range so it would be interesting to see what ranges the input to the model has (min. and max. in particular) as well as the parameters of fc1.