mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-07-06 21:03:14 +02:00
feat: do not print info about results if not in interactrive mode
This commit is contained in:
parent
f85f8ee482
commit
ebe16a206d
@ -105,14 +105,14 @@ def single_train_iteration(
|
|||||||
loss.backward()
|
loss.backward()
|
||||||
training_parameters['optimizer'].step()
|
training_parameters['optimizer'].step()
|
||||||
# Print loss value for every learning step
|
# Print loss value for every learning step
|
||||||
if (batch_idx + 1) % 100 == 0:
|
"""if (batch_idx + 1) % 100 == 0:
|
||||||
print(
|
print(
|
||||||
f'''
|
f'''
|
||||||
Epoch [{epoch+1}/{training_parameters['hyperparameters']["num_epochs"]}],
|
Epoch [{epoch+1}/{training_parameters['hyperparameters']["num_epochs"]}],
|
||||||
Step [{batch_idx+1}/{len(training_parameters['loaders']['train_loader'])}],
|
Step [{batch_idx+1}/{len(training_parameters['loaders']['train_loader'])}],
|
||||||
Loss: {loss.item():.4f}
|
Loss: {loss.item():.4f}
|
||||||
'''
|
'''
|
||||||
)
|
)"""
|
||||||
# Append loss value for every learning step
|
# Append loss value for every learning step
|
||||||
loss_values.append(loss.item())
|
loss_values.append(loss.item())
|
||||||
return data, training_parameters['optimizer']
|
return data, training_parameters['optimizer']
|
||||||
@ -144,7 +144,7 @@ def set_training_parameters(hyperparameters, loaders, model, criterion, optimize
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def training_loop(training_parameters):
|
def training_loop(training_parameters, print_info=True):
|
||||||
"""
|
"""
|
||||||
Train network for all epochs
|
Train network for all epochs
|
||||||
"""
|
"""
|
||||||
@ -156,13 +156,13 @@ def training_loop(training_parameters):
|
|||||||
data, training_parameters, targets, batch_idx, epoch
|
data, training_parameters, targets, batch_idx, epoch
|
||||||
)
|
)
|
||||||
calculate_accuracy_epoch(
|
calculate_accuracy_epoch(
|
||||||
training_parameters, epoch)
|
training_parameters, epoch, print_info)
|
||||||
calculate_validation_set_accuracy(
|
calculate_validation_set_accuracy(
|
||||||
training_parameters, epoch)
|
training_parameters, epoch, print_info)
|
||||||
return epoch, training_parameters['loaders']['train_loader']
|
return epoch, training_parameters['loaders']['train_loader']
|
||||||
|
|
||||||
|
|
||||||
def calculate_accuracy_epoch(training_parameters, epoch):
|
def calculate_accuracy_epoch(training_parameters, epoch, print_info=True):
|
||||||
""" Calculate accuracy on train set after each epoch """
|
""" Calculate accuracy on train set after each epoch """
|
||||||
correct = 0
|
correct = 0
|
||||||
total = 0
|
total = 0
|
||||||
@ -173,12 +173,13 @@ def calculate_accuracy_epoch(training_parameters, epoch):
|
|||||||
total += targets.size(0)
|
total += targets.size(0)
|
||||||
correct += (predicted == targets).sum().item()
|
correct += (predicted == targets).sum().item()
|
||||||
train_accuracy = 100 * correct / total
|
train_accuracy = 100 * correct / total
|
||||||
print(
|
if print_info:
|
||||||
f"Accuracy on Train Set after Epoch {epoch+1}: {train_accuracy:.2f}%")
|
print(
|
||||||
|
f"Accuracy on Train Set after Epoch {epoch+1}: {train_accuracy:.2f}%")
|
||||||
train_acc_values.append(train_accuracy)
|
train_acc_values.append(train_accuracy)
|
||||||
|
|
||||||
|
|
||||||
def calculate_validation_set_accuracy(training_parameters, epoch):
|
def calculate_validation_set_accuracy(training_parameters, epoch, print_info=True):
|
||||||
""" Calculate accuracy on validation set after each epoch """
|
""" Calculate accuracy on validation set after each epoch """
|
||||||
correct = 0
|
correct = 0
|
||||||
total = 0
|
total = 0
|
||||||
@ -190,10 +191,11 @@ def calculate_validation_set_accuracy(training_parameters, epoch):
|
|||||||
correct += (predicted == targets).sum().item()
|
correct += (predicted == targets).sum().item()
|
||||||
|
|
||||||
validation_accuracy = 100 * correct / total
|
validation_accuracy = 100 * correct / total
|
||||||
print(
|
if print_info:
|
||||||
f"Accuracy on Validation Set after Epoch {epoch+1}: {validation_accuracy:.2f}%"
|
print(
|
||||||
)
|
f"Accuracy on Validation Set after Epoch {epoch+1}: {validation_accuracy:.2f}%"
|
||||||
print("---")
|
)
|
||||||
|
print("---")
|
||||||
val_acc_values.append(validation_accuracy)
|
val_acc_values.append(validation_accuracy)
|
||||||
|
|
||||||
|
|
||||||
@ -211,7 +213,7 @@ def main_part(show_plot=True):
|
|||||||
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, show_plot)
|
||||||
file = open("results.txt", "a")
|
file = open("results.txt", "a")
|
||||||
file.write(
|
file.write(
|
||||||
"-------------------------------------------------------------------------------------")
|
"-------------------------------------------------------------------------------------")
|
||||||
@ -260,29 +262,41 @@ if __name__ == "__main__":
|
|||||||
OPTIMIZER_TYPE = 'Adam'
|
OPTIMIZER_TYPE = 'Adam'
|
||||||
|
|
||||||
learning_rate_values = [0.1, 0.01, 0.001]
|
learning_rate_values = [0.1, 0.01, 0.001]
|
||||||
|
i = 0
|
||||||
|
MAX_TESTS = 17
|
||||||
for lr in learning_rate_values:
|
for lr in learning_rate_values:
|
||||||
LEARNING_RATE = lr
|
LEARNING_RATE = lr
|
||||||
main_part(False)
|
main_part(False)
|
||||||
|
i += 1
|
||||||
|
print(f"Test {i}/{MAX_TESTS} ran")
|
||||||
LEARNING_RATE = 0.001
|
LEARNING_RATE = 0.001
|
||||||
|
|
||||||
batch_size_values = [64, 128, 256]
|
batch_size_values = [64, 128, 256]
|
||||||
for bs in batch_size_values:
|
for bs in batch_size_values:
|
||||||
BATCH_SIZE = bs
|
BATCH_SIZE = bs
|
||||||
main_part(False)
|
main_part(False)
|
||||||
|
i += 1
|
||||||
|
print(f"Test {i}/{MAX_TESTS} ran")
|
||||||
BATCH_SIZE = 64
|
BATCH_SIZE = 64
|
||||||
|
|
||||||
hidden_layers_values = [1, 2, 3]
|
hidden_layers_values = [1, 2, 3]
|
||||||
for hl in hidden_layers_values:
|
for hl in hidden_layers_values:
|
||||||
NUM_HIDDEN_LAYERS = hl
|
NUM_HIDDEN_LAYERS = hl
|
||||||
main_part(False)
|
main_part(False)
|
||||||
|
i += 1
|
||||||
|
print(f"Test {i}/{MAX_TESTS} ran")
|
||||||
NUM_HIDDEN_LAYERS = 2
|
NUM_HIDDEN_LAYERS = 2
|
||||||
|
|
||||||
width_values = [64, 128, 256, 512, 1024]
|
width_values = [64, 128, 256, 512, 1024]
|
||||||
for width in WIDTH:
|
for width in WIDTH:
|
||||||
WIDTH = width
|
WIDTH = width
|
||||||
main_part(False)
|
main_part(False)
|
||||||
|
i += 1
|
||||||
|
print(f"Test {i}/{MAX_TESTS} ran")
|
||||||
WIDTH = 128
|
WIDTH = 128
|
||||||
|
|
||||||
for optimizer in ['SGD', 'SGD_Momentum', 'Adam']:
|
for optimizer in ['SGD', 'SGD_Momentum', 'Adam']:
|
||||||
OPTIMIZER_TYPE = optimizer
|
OPTIMIZER_TYPE = optimizer
|
||||||
main_part(False)
|
main_part(False)
|
||||||
|
i += 1
|
||||||
|
print(f"Test {i}/{MAX_TESTS} ran")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user