Spaces:
Sleeping
Sleeping
| import torch | |
| import argparse | |
| from pathlib import Path | |
| from model_builder import FullyDensed | |
| from engine import test_step, train_step | |
| from data_setup import data_loaders | |
| from utils import save_model | |
| def model_training( | |
| P, | |
| EPOCHS, | |
| BATCH_SIZE, | |
| HIDDEN_UNITS, | |
| IMAGES_SIZE, | |
| MODEL_NAME, | |
| ROOT_PATH | |
| ): | |
| device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') | |
| device = torch.device('cpu') | |
| train_data, test_data, class_names = data_loaders(ROOT_PATH=ROOT_PATH,BATCH_SIZE=BATCH_SIZE,IMAGES_SIZE=IMAGES_SIZE,P=P) | |
| model = FullyDensed(HIDDEN_UNITS) | |
| model = model.to(device) | |
| loss_fn = torch.nn.CrossEntropyLoss() | |
| optimizer = torch.optim.Adam(model.parameters()) | |
| for epoch in range(EPOCHS): | |
| train_step( | |
| epoch, | |
| model, | |
| loss_fn, | |
| optimizer, | |
| train_data, | |
| device | |
| ) | |
| acc = test_step( | |
| epoch, | |
| model, | |
| loss_fn, | |
| test_data, | |
| device | |
| ) | |
| save_model(model,path = ROOT_PATH ,MODEL_NAME = MODEL_NAME + f'{int(HIDDEN_UNITS)}-units {int(acc*100//1)}%') | |
| if __name__=='__main__': | |
| parser = argparse.ArgumentParser(description='Train a model with specified parameters.') | |
| parser.add_argument('--P', type=int, default=15) | |
| parser.add_argument('--epochs', type=int, default=3) | |
| parser.add_argument('--batch_size', type=int, default=32) | |
| parser.add_argument('--hidden_units', type=int, default=30) | |
| parser.add_argument('--images_size', type=int, nargs=2, default=[300,300]) | |
| parser.add_argument('--model_name', type=str, default='Eff NetB0') | |
| parser.add_argument('--root_path', type=str, default='/home/hamza/Desktop/Study-Notes/Machine Learning/Pytourch/Modular') | |
| args = parser.parse_args() | |
| P = args.P | |
| EPOCHS = args.epochs | |
| BATCH_SIZE = args.batch_size | |
| HIDDEN_UNITS = args.hidden_units | |
| IMAGES_SIZE = args.images_size | |
| MODEL_NAME = args.model_name | |
| ROOT_PATH = Path(args.root_path) | |
| model_training( | |
| P, | |
| EPOCHS, | |
| BATCH_SIZE, | |
| HIDDEN_UNITS, | |
| IMAGES_SIZE, | |
| MODEL_NAME, | |
| ROOT_PATH | |
| ) | |