feat: automatize testing

This commit is contained in:
Krzysztof Rudnicki 2023-05-16 19:42:24 +02:00
parent e09186eb4e
commit f85f8ee482
4 changed files with 85 additions and 33 deletions

View File

@ -4,13 +4,7 @@ from torch import nn
from torch import optim from torch import optim
from torchvision import datasets, transforms from torchvision import datasets, transforms
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import time
# Global Constants
LEARNING_RATE = 0.001
BATCH_SIZE = 64
NUM_HIDDEN_LAYERS = 2
WIDTH = 128
OPTIMIZER_TYPE = 'Adam'
def set_hyperparameters(): def set_hyperparameters():
@ -203,7 +197,7 @@ def calculate_validation_set_accuracy(training_parameters, epoch):
val_acc_values.append(validation_accuracy) val_acc_values.append(validation_accuracy)
if __name__ == "__main__": def main_part(show_plot=True):
( (
HYPERPARAMETERS, HYPERPARAMETERS,
TRAIN_LOADER, TRAIN_LOADER,
@ -212,32 +206,83 @@ if __name__ == "__main__":
CRITERION, CRITERION,
OPTIMIZER, OPTIMIZER,
) = initial_configuration() ) = initial_configuration()
start_time = time.time()
LOADERS = set_loaders( LOADERS = set_loaders(
TRAIN_LOADER, TEST_LOADER) TRAIN_LOADER, TEST_LOADER)
TRAINING_PARAMETERS = set_training_parameters( TRAINING_PARAMETERS = set_training_parameters(
HYPERPARAMETERS, LOADERS, MODEL, CRITERION, OPTIMIZER) HYPERPARAMETERS, LOADERS, MODEL, CRITERION, OPTIMIZER)
training_loop(TRAINING_PARAMETERS) 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 # Plot the loss value for every learning step
plt.plot(loss_values) plt.plot(loss_values)
plt.xlabel('Learning Step') plt.xlabel('Learning Step')
plt.ylabel('Loss') plt.ylabel('Loss')
plt.title('Loss Value') plt.title('Loss Value')
plt.savefig('loss_value.png') plt.savefig(
plt.show() 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 # Plot the accuracy on train set after each epoch
plt.plot(train_acc_values) plt.plot(train_acc_values)
plt.xlabel('Epoch') plt.xlabel('Epoch')
plt.ylabel('Train Accuracy') plt.ylabel('Train Accuracy')
plt.title('Accuracy on Train Set') plt.title('Accuracy on Train Set')
plt.savefig('train_accuracy.png') plt.savefig(
plt.show() 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 # Plot the accuracy on validation set after each epoch
plt.plot(val_acc_values) plt.plot(val_acc_values)
plt.xlabel('Epoch') plt.xlabel('Epoch')
plt.ylabel('Validation Accuracy') plt.ylabel('Validation Accuracy')
plt.title('Accuracy on Validation Set') plt.title('Accuracy on Validation Set')
plt.savefig('validation_accuracy.png') plt.savefig(
plt.show() 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)

Binary file not shown.

View File

@ -1,12 +1,19 @@
\documentclass{article} \documentclass{article}[12pt]
\usepackage{graphicx} % Required for inserting images \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} \title{EARIN Lab 5 Report}
\author{321krzychu } \author{Krzysztof Rudnicki, 307585 \\ Jakub Kliszko, 303866 }
\date{May 2023} \date{\today}
\begin{document} \begin{document}
\maketitle \maketitle
\section{Introduction} \section{Introduction}