beautified for submission

This commit is contained in:
Patrick 2024-07-21 17:36:22 +02:00
parent c4a93e9fae
commit ffe355e47c
3 changed files with 29 additions and 13 deletions

View File

@ -51,7 +51,6 @@ class AsyncDataLoader(torch.utils.data.DataLoader):
self.__dataset_access.acquire() self.__dataset_access.acquire()
self.__dataset_access.release() self.__dataset_access.release()

View File

@ -4,7 +4,7 @@ import numpy.random
import torch.utils.data import torch.utils.data
import torch.cuda import torch.cuda
from architecture import MyCNN from architecture import model
from dataset import ImagesDataset from dataset import ImagesDataset
from AImageDataset import AImagesDataset from AImageDataset import AImagesDataset
@ -49,10 +49,7 @@ def train_model(accuracies,
dataset = ImagesDataset("training_data") dataset = ImagesDataset("training_data")
# dataset = torch.utils.data.Subset(dataset, range(0, 32))
train_data, eval_data = split_data(dataset) train_data, eval_data = split_data(dataset)
# train_data, eval_data = torch.utils.data.random_split(dataset, [0.5, 0.5])
augmented_train_data = AImagesDataset(train_data, augment_data) augmented_train_data = AImagesDataset(train_data, augment_data)
train_loader = AsyncDataLoader(augmented_train_data, train_loader = AsyncDataLoader(augmented_train_data,
@ -123,12 +120,8 @@ def train_model(accuracies,
losses.append('eval_loss', eval_loss.item() / len(eval_data)) losses.append('eval_loss', eval_loss.item() / len(eval_data))
print("Eval: ", eval_positives.item(), "/ ", len(eval_data), " = ", eval_positives.item() / len(eval_data)) print("Eval: ", eval_positives.item(), "/ ", len(eval_data), " = ", eval_positives.item() / len(eval_data))
# print epoch summary
# print(f"Epoch: {epoch} --- Train loss: {train_loss:7.4f} --- Eval loss: {eval_loss:7.4f}")
if eval_positives.item() / len(eval_data) > 0.5: if eval_positives.item() / len(eval_data) > 0.5:
torch.save(model.state_dict(), f'models/model-{start_time.strftime("%Y%m%d-%H%M%S")}-epoch-{epoch}.pt') torch.save(model.state_dict(), f'models/model-{start_time.strftime("%Y%m%d-%H%M%S")}-epoch-{epoch}.pth')
with open(f'models/model-{start_time.strftime("%Y%m%d-%H%M%S")}.csv', 'a') as file: with open(f'models/model-{start_time.strftime("%Y%m%d-%H%M%S")}.csv', 'a') as file:
file.write(f'{epoch};{len(augmented_train_data)};{len(eval_data)};{train_loss.item()};{eval_loss.item()};' file.write(f'{epoch};{len(augmented_train_data)};{len(eval_data)};{train_loss.item()};{eval_loss.item()};'
f'{train_positives};{eval_positives}\n') f'{train_positives};{eval_positives}\n')
@ -140,15 +133,13 @@ def train_worker(p_epoch, p_train, p_eval, plotter_accuracies, plotter_loss, sta
device = 'cuda' device = 'cuda'
model = MyCNN(input_channels=1, model.to(device)
input_size=(100, 100)).to(device)
num_epochs = 1000000 num_epochs = 1000000
batch_size = 64 batch_size = 64
optimizer = torch.optim.Adam(model.parameters(), optimizer = torch.optim.Adam(model.parameters(),
lr=0.0001, lr=0.0001,
# weight_decay=0.1,
fused=True) fused=True)
loss_function = torch.nn.CrossEntropyLoss() loss_function = torch.nn.CrossEntropyLoss()

26
verify.py Normal file
View File

@ -0,0 +1,26 @@
import torch
import torch.utils.data
from architecture import model
from dataset import ImagesDataset
if __name__ == "__main__":
model_params = torch.load("submit_attempts/Nr1/model-20240713-164545-epoch-30.pth")
model.load_state_dict(model_params)
model.eval()
dataset = ImagesDataset("training_data")
correct = 0
print("evaluating...")
for (image_t, class_id, _, _) in torch.utils.data.DataLoader(dataset):
out = model(image_t)
if out.argmax() == class_id:
correct += 1
print(f"Identified {correct} images out of {len(dataset)} correctly")
print(f"Accuracy: {100 * correct / len(dataset)}%")