Spaces:
Build error
Build error
Download engine.py from HamzaNaser/HandWrittenDigits: direct link, hf CLI and curl.
- Browser
- Download file 1.34 kB
-
https://huggingface.co/spaces/HamzaNaser/HandWrittenDigits/resolve/main/engine.py
- Command line
-
hf download hf://spaces/HamzaNaser/HandWrittenDigits/engine.py
-
curl -L -o engine.py https://huggingface.co/spaces/HamzaNaser/HandWrittenDigits/resolve/main/engine.py
1.34 kB
| import torch | |
| from sklearn.metrics import accuracy_score | |
| def train_step( | |
| epoch, | |
| model, | |
| loss_fn, | |
| optimizer, | |
| train_data, | |
| device): | |
| train_loss, train_acc = 0,0 | |
| for batch, (X,y) in enumerate(train_data): | |
| X,y = X.to(device), y.to(device) | |
| model.train() | |
| optimizer.zero_grad() | |
| y_pred = model(X) | |
| loss = loss_fn(y_pred,y) | |
| train_loss+= loss | |
| train_acc += accuracy_score(torch.softmax(y_pred,dim=1).argmax(axis=1).cpu(),y.cpu()) | |
| loss.backward() | |
| optimizer.step() | |
| train_loss /= len(train_data) | |
| train_acc /= len(train_data) | |
| print(f'Epoch {epoch} | train_Loss {train_loss:.2f} | train_acc {train_acc:.2f}') | |
| def test_step( | |
| epoch, | |
| model, | |
| loss_fn, | |
| test_data, | |
| device): | |
| model.eval() | |
| with torch.inference_mode(): | |
| test_loss, test_acc = 0,0 | |
| for _, (X,y) in enumerate(test_data): | |
| X,y = X.to(device), y.to(device) | |
| y_pred = model(X) | |
| test_loss += loss_fn(y_pred,y) | |
| test_acc += accuracy_score(torch.softmax(y_pred,dim=1).argmax(axis=1).cpu(),y.cpu()) | |
| test_loss /= len(test_data) | |
| test_acc /= len(test_data) | |
| print(f'Epoch {epoch} | test_loss {test_loss:.2f} | test_acc {test_acc:.2f}') | |
| return test_acc | |