1. Represent data as tensors with explicit shape
Features are float32 with two columns; targets are float32 column vectors. The training loop uses only the first 24 rows. Eight final rows remain unscored in this reference; their existence is not permission to tune on them.

2. Implement forward, backward and optimizer steps
zero_grad clears prior accumulated gradients; backward computes current derivatives; step updates parameters. The reference reports actual training loss and validation accuracy. No model download or external call occurs.

3. Evaluate without changing the model
Validation uses eight rows with frozen training parameters. The final eight rows remain unscored. eval is not an access-control setting and no_grad does not itself switch layer behaviour. A small synthetic score is a mechanics demonstration.
