def main(): # Device SEED = 1 cuda = torch.cuda.is_available() print("Cuda is available ?", cuda) torch.manual_seed(SEED) if cuda: torch.cuda.manual_seed(SEED) device = torch.device("cuda" if cuda else "cpu") # Create Train and Test Loader trainloader = Loader.getDataLoader(dataset_name, trainSet_dict, trainLoad_dict) testloader = Loader.getDataLoader(dataset_name, testSet_dict, testLoad_dict) classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck') # Loss Function criterion = nn.NLLLoss() # Optimizer model = Net().to(device) optimizer = optim.SGD(model.parameters(), lr=LR, momentum=MOMENTUM, weight_decay=WEIGHT_DECAY) # Start training for epoch in range(EPOCHS): train_loss, train_acc = TrainModel.train(model, device, trainloader, criterion, optimizer, epoch) train_losses.append(train_loss) train_accuracy.append(train_acc) test_loss, test_acc = TestModel.test(model, device, testloader, criterion) test_losses.append(test_loss) test_accuracy.append(test_acc) # Plot and Save Graph getPlottedGraph(EPOCHS, train_losses, train_accuracy, test_losses, test_accuracy, name="cifar_10_plot", PATH=IMAGE_PATH) # Save Models torch.save(model.state_dict(), MODEL_PATH + "model7.pth")
def main(): # Device SEED = 1 cuda = torch.cuda.is_available() print("Cuda is available ?", cuda) torch.manual_seed(SEED) if cuda: torch.cuda.manual_seed(SEED) device = torch.device("cuda" if cuda else "cpu") # Create Train and Test Loader trainloader = Loader.getDataLoader(dataset_name, trainSet_dict, trainLoad_dict) testloader = Loader.getDataLoader(dataset_name, testSet_dict, testLoad_dict) classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck') # Loss Function criterion = nn.CrossEntropyLoss() # Optimizer model = ResNet18().to(device) optimizer = optim.SGD(model.parameters(), lr=LR, momentum=MOMENTUM, weight_decay=WEIGHT_DECAY) scheduler = StepLR(optimizer, step_size=13, gamma=0.1) # Start training for epoch in range(EPOCHS): train_loss, train_acc = TrainModel.train(model, device, trainloader, criterion, optimizer, epoch) # scheduler.step() train_losses.append(train_loss) train_accuracy.append(train_acc) test_loss, test_acc = TestModel.test(model, device, testloader, criterion) test_losses.append(test_loss) test_accuracy.append(test_acc) # Plot and Save Graph getPlottedGraph(EPOCHS, train_losses, train_accuracy, test_losses, test_accuracy,name="cifar_10_plot_using_resnet18_v3", PATH=IMAGE_PATH) # Save Models torch.save(model.state_dict(), MODEL_PATH+"model8_v3.pth") #misclassified images ms.show_save_misclassified_images(model, device, testloader, classes, list(img_mean), list(img_std), "fig_cifar10_v1", IMAGE_PATH, 25)
def main(): # Create Train Loader and Test Loader trainloader = Loader.getDataLoader(dataset_name, trainSet_dict, trainLoad_dict) testloader = Loader.getDataLoader(dataset_name, testSet_dict, testLoad_dict) classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck') # Start training for epoch in range(EPOCHS): #Train train_loss, train_acc = TrainModel.train(model, device, trainloader, criterion, optimizer, epoch) scheduler.step() train_losses.append(train_loss) train_accuracy.append(train_acc) #Test test_loss, test_acc = TestModel.test(model, device, testloader, criterion) test_losses.append(test_loss) test_accuracy.append(test_acc) #Save model state = {'epoch': epoch + 1, 'state_dict': model.state_dict(), 'optimizer': optimizer.state_dict()} torch.save(state, filename) # Plot and Save Graph getPlottedGraph(EPOCHS, train_losses, train_accuracy, test_losses, test_accuracy, name="S9_plot_final", PATH=MODEL_PATH) # Show and Save correct classified images show_save_correctly_classified_images(model, testloader, device, IMAGE_PATH, name="correct_classified_imgs", max_correctly_classified_images_imgs=25, labels_list=classes) # Show and Save misclassified images show_save_misclassified_images(model, testloader, device, IMAGE_PATH, name="misclassified_imgs", max_misclassified_imgs=25, labels_list=classes) # Visualize Activation Map misclassified_imgs, correctly_classified_images = classify_images(model, testloader, device, 5) layers_list = ["layer1", "layer2", "layer3", "layer4"] display_gradcam = VisualizeCam(model, classes, layers_list) correct_pred_imgs = [] for i in range(len(correctly_classified_images)): correct_pred_imgs.append(torch.as_tensor(correctly_classified_images[i]["img"])) display_gradcam(torch.stack(correct_pred_imgs), layers_list, PATH="./" + str("visualization"), metric="correct")