(dataloader, model, loss_fn, optimizer)
| 148 | # evaluates the model's performance against our test data. |
| 149 | |
| 150 | def train_loop(dataloader, model, loss_fn, optimizer): |
| 151 | size = len(dataloader.dataset) |
| 152 | # Set the model to training mode - important for batch normalization and dropout layers |
| 153 | # Unnecessary in this situation but added for best practices |
| 154 | model.train() |
| 155 | for batch, (X, y) in enumerate(dataloader): |
| 156 | # Compute prediction and loss |
| 157 | pred = model(X) |
| 158 | loss = loss_fn(pred, y) |
| 159 | |
| 160 | # Backpropagation |
| 161 | loss.backward() |
| 162 | optimizer.step() |
| 163 | optimizer.zero_grad() |
| 164 | |
| 165 | if batch % 100 == 0: |
| 166 | loss, current = loss.item(), batch * batch_size + len(X) |
| 167 | print(f"loss: {loss:>7f} [{current:>5d}/{size:>5d}]") |
| 168 | |
| 169 | |
| 170 | def test_loop(dataloader, model, loss_fn): |
no test coverage detected