The design of the network seems a bit odd, as usually in fully connected models there is a projection to a higher dimensional space (but here the maximum dimension is 7 throughout the model). You might want to try a simple sanity check which is to just use a very small subset of the dataset (e.g., two data points) and use it as both the train and test set to verify that you can easily overfit a small amount of data which would rule out trivial bugs in the training loop. After that you could try increasing the size of the hidden layers of the model or other common techniques like normalizing the dataset (though in theory linear layers with ReLU activations should be able to “learn around” unnormalized data).