diff --git a/lab4/report/EARIN_RUDNICKI_KLISZKO_LAB_4.pdf b/lab4/report/EARIN_RUDNICKI_KLISZKO_LAB_4.pdf index 08152f6e..2da71187 100644 Binary files a/lab4/report/EARIN_RUDNICKI_KLISZKO_LAB_4.pdf and b/lab4/report/EARIN_RUDNICKI_KLISZKO_LAB_4.pdf differ diff --git a/lab5/code/main.py b/lab5/code/main.py index c3c14aa3..0cba33f6 100644 --- a/lab5/code/main.py +++ b/lab5/code/main.py @@ -4,13 +4,7 @@ from torch import nn from torch import optim from torchvision import datasets, transforms import matplotlib.pyplot as plt - -# Global Constants -LEARNING_RATE = 0.001 -BATCH_SIZE = 64 -NUM_HIDDEN_LAYERS = 2 -WIDTH = 128 -OPTIMIZER_TYPE = 'Adam' +import time def set_hyperparameters(): @@ -203,7 +197,7 @@ def calculate_validation_set_accuracy(training_parameters, epoch): val_acc_values.append(validation_accuracy) -if __name__ == "__main__": +def main_part(show_plot=True): ( HYPERPARAMETERS, TRAIN_LOADER, @@ -212,32 +206,83 @@ if __name__ == "__main__": CRITERION, OPTIMIZER, ) = initial_configuration() + start_time = time.time() LOADERS = set_loaders( TRAIN_LOADER, TEST_LOADER) TRAINING_PARAMETERS = set_training_parameters( HYPERPARAMETERS, LOADERS, MODEL, CRITERION, OPTIMIZER) training_loop(TRAINING_PARAMETERS) + file = open("results.txt", "a") + file.write( + "-------------------------------------------------------------------------------------") + file.write( + f"loss-lr{LEARNING_RATE}-bs{BATCH_SIZE}-hl{NUM_HIDDEN_LAYERS}-w{WIDTH}-{OPTIMIZER_TYPE}") + file.write(f"Execution time: {(time.time() - start_time)}") + file.write( + "-------------------------------------------------------------------------------------") -# Plot the loss value for every learning step -plt.plot(loss_values) -plt.xlabel('Learning Step') -plt.ylabel('Loss') -plt.title('Loss Value') -plt.savefig('loss_value.png') -plt.show() + # Plot the loss value for every learning step + plt.plot(loss_values) + plt.xlabel('Learning Step') + plt.ylabel('Loss') + plt.title('Loss Value') + plt.savefig( + f'loss-lr{LEARNING_RATE}-bs{BATCH_SIZE}-hl{NUM_HIDDEN_LAYERS}-w{WIDTH}-{OPTIMIZER_TYPE}.png') + if show_plot: + plt.show() -# Plot the accuracy on train set after each epoch -plt.plot(train_acc_values) -plt.xlabel('Epoch') -plt.ylabel('Train Accuracy') -plt.title('Accuracy on Train Set') -plt.savefig('train_accuracy.png') -plt.show() + # Plot the accuracy on train set after each epoch + plt.plot(train_acc_values) + plt.xlabel('Epoch') + plt.ylabel('Train Accuracy') + plt.title('Accuracy on Train Set') + plt.savefig( + f'trainAccuracy-lr{LEARNING_RATE}-bs{BATCH_SIZE}-hl{NUM_HIDDEN_LAYERS}-w{WIDTH}-{OPTIMIZER_TYPE}.png') + if show_plot: + plt.show() -# Plot the accuracy on validation set after each epoch -plt.plot(val_acc_values) -plt.xlabel('Epoch') -plt.ylabel('Validation Accuracy') -plt.title('Accuracy on Validation Set') -plt.savefig('validation_accuracy.png') -plt.show() + # Plot the accuracy on validation set after each epoch + plt.plot(val_acc_values) + plt.xlabel('Epoch') + plt.ylabel('Validation Accuracy') + plt.title('Accuracy on Validation Set') + plt.savefig( + f'validationAccuracy-lr{LEARNING_RATE}-bs{BATCH_SIZE}-hl{NUM_HIDDEN_LAYERS}-w{WIDTH}-{OPTIMIZER_TYPE}.png') + if show_plot: + plt.show() + + +if __name__ == "__main__": + LEARNING_RATE = 0.001 + BATCH_SIZE = 64 + NUM_HIDDEN_LAYERS = 2 + WIDTH = 128 + OPTIMIZER_TYPE = 'Adam' + + learning_rate_values = [0.1, 0.01, 0.001] + for lr in learning_rate_values: + LEARNING_RATE = lr + main_part(False) + LEARNING_RATE = 0.001 + + batch_size_values = [64, 128, 256] + for bs in batch_size_values: + BATCH_SIZE = bs + main_part(False) + BATCH_SIZE = 64 + + hidden_layers_values = [1, 2, 3] + for hl in hidden_layers_values: + NUM_HIDDEN_LAYERS = hl + main_part(False) + NUM_HIDDEN_LAYERS = 2 + + width_values = [64, 128, 256, 512, 1024] + for width in WIDTH: + WIDTH = width + main_part(False) + WIDTH = 128 + + for optimizer in ['SGD', 'SGD_Momentum', 'Adam']: + OPTIMIZER_TYPE = optimizer + main_part(False) diff --git a/lab5/report/EARIN_LAB_5_RUDNICKI_KLISZKO.pdf b/lab5/report/EARIN_LAB_5_RUDNICKI_KLISZKO.pdf new file mode 100644 index 00000000..d6f30a1c Binary files /dev/null and b/lab5/report/EARIN_LAB_5_RUDNICKI_KLISZKO.pdf differ diff --git a/lab5/report/EARIN_LAB_5_RUDNICKI_KLISZKO.tex b/lab5/report/EARIN_LAB_5_RUDNICKI_KLISZKO.tex index 334a84bf..0660d860 100644 --- a/lab5/report/EARIN_LAB_5_RUDNICKI_KLISZKO.tex +++ b/lab5/report/EARIN_LAB_5_RUDNICKI_KLISZKO.tex @@ -1,12 +1,19 @@ -\documentclass{article} +\documentclass{article}[12pt] \usepackage{graphicx} % Required for inserting images +\usepackage{listings} +\usepackage{hyperref} +\usepackage{tabularx} +\usepackage{float} +\usepackage{subfig} +\usepackage[a4paper, total={6in, 8in}]{geometry} -\title{EARIN_LAB_5_RUDNICKI_KLISZKO.tex} -\author{321krzychu } -\date{May 2023} +\title{EARIN Lab 5 Report} +\author{Krzysztof Rudnicki, 307585 \\ Jakub Kliszko, 303866 } +\date{\today} \begin{document} + \maketitle \section{Introduction}