Though that does not explain why feeding the NN all zeros does not provide all zeroes on the output (shouldn’t 0*x=0 (where 0 and x are tensors))
	for (int i = 0; i != 15; i++)
		std::cout << nn.forward(torch::zeros({output_nodes,input_nodes})).item<float>() << std::endl;

Number of hidden layers: 1
0.534954
0.534954
0.534954
0.534954
0.534954
0.534954
0.534954
0.534954
0.534954
0.534954
0.534954
0.534954
0.534954
0.534954
0.534954