import torch import os from timeit import default_timer as timer from src.data_setup import data_setup from src.model import create_effnetb2_model, get_transforms from src.train_and_test import train def main(): device = "cuda" if torch.cuda.is_available() else "cpu" print(f"Using device: {device}") train_dir = "data/train" test_dir = "data/test" transforms = get_transforms() train_dataloader, test_dataloader, class_names = data_setup( train_dir, test_dir, transforms, batch_size=32, num_workers=os.cpu_count() ) model = create_effnetb2_model(num_classes=len(class_names)).to(device) loss_fn = torch.nn.CrossEntropyLoss() optimizer = torch.optim.Adam(model.parameters(), lr=0.0001) start_time = timer() results = train( model=model, train_dataloader=train_dataloader, test_dataloader=test_dataloader, optimizer=optimizer, loss_fn=loss_fn, epochs=25, device=device ) end_time = timer() print(f"[INFO] Total training time: {end_time-start_time:.3f} seconds") if __name__ == "__main__": main()