MLP (ReLU)
CIFAR-10 classifier from SMAI Assignment 4 (Q1), trained on the clean labels (noise p = 0) for 100 epochs.
- Architecture: 3072 -> 64 -> 32 -> 10, ReLU hidden activations, identity output (logits), 199,082 parameters
- All weights unconstrained; He-normal initialisation, biases 0
- Loss: categorical cross-entropy; plain SGD, lr 0.05, batch size 64, no gradient accumulation, no early stopping
- Seed: 1077 (
torch.manual_seed(1078), DataLoader generator seed 1079) - Test accuracy (CIFAR-10 test part, 10,000 images): 0.4478
Preprocessing
Flatten the 32x32x3 image to 3072 values, convert to float64, divide by 255, then standardise each column:
x = (x / 255 - mean) / std with mean and std taken from preprocessing.npz
(computed on the 50,000 CIFAR-10 train images; columns with std 0 use divisor 1).
Files
mlp_weights.pt- PyTorchstate_dictof thenn.Sequentialmodel (Linear/activation pairs, last layer Linear only)mlp.npz- same weights for the NumPy library of the assignment (W0..W2of shape (n_in, n_out),b0..b2; load withModel.load_from)preprocessing.npz-mean,std(3072 values each)