diff --git a/LoadDataGit.py b/LoadDataGit.py deleted file mode 100644 index 825a19f..0000000 --- a/LoadDataGit.py +++ /dev/null @@ -1,49 +0,0 @@ -#From: -#https://github.com/heysachin/Convolutional-Neural-Network-CIFAR-10-PyTorch/blob/master/cifar10_cnn.ipynb - -from torchvision import datasets -import torchvision.transforms as transforms -from torch.utils.data.sampler import SubsetRandomSampler - -# number of subprocesses to use for data loading -num_workers = 0 -# how many samples per batch to load -batch_size = 20 -# percentage of training set to use as validation -valid_size = 0.2 - -# convert data to a normalized torch.FloatTensor -transform = transforms.Compose([ - transforms.ToTensor(), - transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) - ]) - -# choose the training and test datasets -train_data = datasets.CIFAR10('data', train=True, - download=True, transform=transform) -test_data = datasets.CIFAR10('data', train=False, - download=True, transform=transform) - -# obtain training indices that will be used for validation -num_train = len(train_data) -indices = list(range(num_train)) -np.random.shuffle(indices) -split = int(np.floor(valid_size * num_train)) -train_idx, valid_idx = indices[split:], indices[:split] - -# define samplers for obtaining training and validation batches -train_sampler = SubsetRandomSampler(train_idx) -valid_sampler = SubsetRandomSampler(valid_idx) - -# prepare data loaders (combine dataset and sampler) -train_loader = torch.utils.data.DataLoader(train_data, batch_size=batch_size, - sampler=train_sampler, num_workers=num_workers) -valid_loader = torch.utils.data.DataLoader(train_data, batch_size=batch_size, - sampler=valid_sampler, num_workers=num_workers) -test_loader = torch.utils.data.DataLoader(test_data, batch_size=batch_size, - num_workers=num_workers) - -# specify the image classes -classes = ['airplane', 'automobile', 'bird', 'cat', 'deer', - 'dog', 'frog', 'horse', 'ship', 'truck'] - diff --git a/Practical1.py b/Practical1.py deleted file mode 100644 index ed88657..0000000 --- a/Practical1.py +++ /dev/null @@ -1,100 +0,0 @@ -import torch -import torch.nn as nn -import torch.optim as optim -from torchvision import datasets, transforms -from torch.utils.data import DataLoader -import torchvision -import copy -import matplotlib.pyplot as plt -import numpy as np - - -batch_size = 1000 -epochs = 25 - -cifar_data = datasets.CIFAR10("./", train=True, download=True, transform=transforms.ToTensor()) -cifar_test = datasets.CIFAR10("./", train=False, download=True, transform=transforms.ToTensor()) - -cifar_train, cifar_val = torch.utils.data.random_split(cifar_data,[40000,10000],generator=torch.Generator().manual_seed(420)) - - -train_loader = DataLoader(cifar_train, batch_size=batch_size, shuffle=False) -validation_loader = DataLoader(cifar_val, batch_size=batch_size, shuffle=False) -test_loader = DataLoader(cifar_test, batch_size= batch_size, shuffle=False) - -dataiter = iter(train_loader) -images, labels = dataiter.next() - -plt.imshow(np.transpose(torchvision.utils.make_grid(images).numpy(),(1,2,0))) -plt.show() - - -network = nn.Sequential( - - nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3,padding=1), - nn.LeakyReLU(), - nn.Conv2d(in_channels=32, out_channels=32, kernel_size=3,padding=1), - nn.LeakyReLU(), - nn.MaxPool2d(kernel_size=2), - - nn.Flatten(), - - nn.Linear(8192, 10) -) -networkcopy = copy.deepcopy(network) -optimizer = optim.Adam(network.parameters(), lr = 0.0001) -loss_function = nn.CrossEntropyLoss() -traininglosses = [] -validationlosses = [] -firstRun = True -validationloss = 0 - - -for epoch in range(epochs): - new_trainingloss = 0 - - for train_nr, (images, labels) in enumerate(train_loader): - - optimizer.zero_grad() - - prediction = network(images) - loss = loss_function(prediction, labels) - loss.backward() - optimizer.step() - print( - '\rEpoch {} [{}/{}] - Loss: {}'.format( - epoch+1, train_nr+1, len(train_loader), loss - ), - end='' - ) - new_trainingloss += loss -''' - traininglosses.append(new_trainingloss) - new_validationloss = 0 - - for val_nr, (images, labels) in enumerate(validation_loader): - prediction = network(images) - new_validationloss += loss_function(prediction, labels) - - if firstRun: - validationloss = new_validationloss - firstRun = False - elif new_validationloss < validationloss: - validationloss = new_validationloss - networkcopy = copy.deepcopy(network) - save_object(networkcopy,"best_network") - - validationlosses.append(validationloss) -''' -corr = 0 - -for index, (image, label) in enumerate(test_loader): - guess = torch.argmax(networkcopy(image), dim=-1) - corr += (guess == label).sum() -print("\n","Best network result on test:", corr/10000) -corr = 0 -for index, (image, label) in enumerate(test_loader): - guess = torch.argmax(networkcopy(image), dim=-1) - corr += (guess == label).sum() -print("\n","Result lastnetwork on test:", corr/10000) - diff --git a/README.md b/README.md index 8ce0450..38a0967 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,4 @@ -# D7047E_Exercise1 -Deep Courses on LTU +# D7047E_Exercise 1 -aiodsfhåoqewihfåoiaeh +This is the result of Exercise 1. -venjjivqebviqed diff --git a/best_network b/best_network deleted file mode 100644 index 6924956..0000000 Binary files a/best_network and /dev/null differ diff --git a/cifar_net.pth b/cifar_net.pth deleted file mode 100644 index d30adf7..0000000 Binary files a/cifar_net.pth and /dev/null differ diff --git a/downloadDataset.py b/downloadDataset.py deleted file mode 100644 index 4e32ca4..0000000 --- a/downloadDataset.py +++ /dev/null @@ -1,18 +0,0 @@ -import torch -from torchvision import datasets, transforms -from torch.utils.data import DataLoader -batch_size = 10000 - -cifar_data = datasets.CIFAR10("./", train=True, download=True, transform=transforms.ToTensor()) - -cifar_test = datasets.CIFAR10("./", train=False, download=True, transform=transforms.ToTensor()) - -cifar_train, cifar_val = torch.utils.data.random_split(cifar_data,[40000,10000],generator=torch.Generator().manual_seed(420)) - - -train_loader = DataLoader(cifar_train, batch_size=batch_size, shuffle=False) - -validation_loader = DataLoader(cifar_val, batch_size=batch_size, shuffle=False) - -test_loader = DataLoader(cifar_test, batch_size= batch_size, shuffle=False) - diff --git a/neural_network b/neural_network deleted file mode 100644 index 0eee978..0000000 Binary files a/neural_network and /dev/null differ diff --git a/online_solution.py b/online_solution.py deleted file mode 100644 index bafbba2..0000000 --- a/online_solution.py +++ /dev/null @@ -1,142 +0,0 @@ -import torch -import torchvision -import torchvision.transforms as transforms -import matplotlib.pyplot as plt -import numpy as np -import torch.nn as nn -import torch.nn.functional as F - - -transform = transforms.Compose( - [transforms.ToTensor(), - transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) - -batch_size = 4 - -trainset = torchvision.datasets.CIFAR10(root='./data', train=True, - download=True, transform=transform) -trainloader = torch.utils.data.DataLoader(trainset, batch_size=batch_size, - shuffle=True, num_workers=0) - -testset = torchvision.datasets.CIFAR10(root='./data', train=False, - download=True, transform=transform) -testloader = torch.utils.data.DataLoader(testset, batch_size=batch_size, - shuffle=False, num_workers=0) - -classes = ('plane', 'car', 'bird', 'cat', - 'deer', 'dog', 'frog', 'horse', 'ship', 'truck') - - - - -# get some random training images -dataiter = iter(trainloader) -images, labels = dataiter.next() - -# print labels -print(' '.join('%5s' % classes[labels[j]] for j in range(batch_size))) - - -class Net(nn.Module): - def __init__(self): - super(Net, self).__init__() - self.conv1 = nn.Conv2d(3, 6, 5) - self.pool = nn.MaxPool2d(2, 2) - self.conv2 = nn.Conv2d(6, 16, 5) - self.fc1 = nn.Linear(16 * 5 * 5, 120) - self.fc2 = nn.Linear(120, 84) - self.fc3 = nn.Linear(84, 10) - - def forward(self, x): - x = self.pool(F.relu(self.conv1(x))) - x = self.pool(F.relu(self.conv2(x))) - x = x.view(-1, 16 * 5 * 5) - x = F.relu(self.fc1(x)) - x = F.relu(self.fc2(x)) - x = self.fc3(x) - return x - - -net = Net() - - -import torch.optim as optim - -criterion = nn.CrossEntropyLoss() -optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9) - -for epoch in range(2): # loop over the dataset multiple times - - running_loss = 0.0 - for i, data in enumerate(trainloader, 0): - # get the inputs; data is a list of [inputs, labels] - inputs, labels = data - - # zero the parameter gradients - optimizer.zero_grad() - - # forward + backward + optimize - outputs = net(inputs) - loss = criterion(outputs, labels) - loss.backward() - optimizer.step() - - # print statistics - running_loss += loss.item() - if i % 2000 == 1999: # print every 2000 mini-batches - print('[%d, %5d] loss: %.3f' % - (epoch + 1, i + 1, running_loss / 2000)) - running_loss = 0.0 - -print('Finished Training') - -PATH = './cifar_net.pth' -torch.save(net.state_dict(), PATH) - -dataiter = iter(testloader) -images, labels = dataiter.next() - -# print images -#imshow(torchvision.utils.make_grid(images)) -#print('GroundTruth: ', ' '.join('%5s' % classes[labels[j]] for j in range(4))) - -net = Net() -net.load_state_dict(torch.load(PATH)) -outputs = net(images) -_, predicted = torch.max(outputs, 1) - -print('Predicted: ', ' '.join('%5s' % classes[predicted[j]] - for j in range(4))) - -correct = 0 -total = 0 -with torch.no_grad(): - for data in testloader: - images, labels = data - outputs = net(images) - _, predicted = torch.max(outputs.data, 1) - total += labels.size(0) - correct += (predicted == labels).sum().item() - -print('Accuracy of the network on the 10000 test images: %d %%' % ( - 100 * correct / total)) - - -class_correct = list(0. for i in range(10)) -class_total = list(0. for i in range(10)) -with torch.no_grad(): - for data in testloader: - images, labels = data - outputs = net(images) - _, predicted = torch.max(outputs, 1) - c = (predicted == labels).squeeze() - for i in range(4): - label = labels[i] - class_correct[label] += c[i].item() - class_total[label] += 1 - - -for i in range(10): - print('Accuracy of %5s : %2d %%' % ( - classes[i], 100 * class_correct[i] / class_total[i])) - diff --git a/test of tensorboard.py b/test of tensorboard.py deleted file mode 100644 index 8652805..0000000 --- a/test of tensorboard.py +++ /dev/null @@ -1,15 +0,0 @@ - -# Information https://pytorch.org/docs/stable/tensorboard.html -from torch.utils.tensorboard import SummaryWriter -import numpy as np - -writer = SummaryWriter() - -for n_iter in range(100): - writer.add_scalar('Loss/train', np.random.random(), n_iter) - writer.add_scalar('Loss/test', np.random.random(), n_iter) - writer.add_scalar('Accuracy/train', np.random.random(), n_iter) - writer.add_scalar('Accuracy/test', np.random.random(), n_iter) - writer.add_scalar("henrik/anton", np.random.random(), n_iter) - writer.add_scalar("henrik/bertil", np.random.random(), n_iter) - writer.add_scalar("henrik/kalle", np.random.random(), n_iter) \ No newline at end of file diff --git a/verify_network.py b/verify_network.py deleted file mode 100644 index 2bd9b24..0000000 --- a/verify_network.py +++ /dev/null @@ -1,41 +0,0 @@ -import torch -import torch.nn as nn -import torch.optim as optim -from torchvision import datasets, transforms -from torch.utils.data import DataLoader -import copy -import pickle - -batch_size = 10000 - -cifar_data = datasets.CIFAR10("./", train=True, download=True, transform=transforms.ToTensor()) -cifar_test = datasets.CIFAR10("./", train=False, download=True, transform=transforms.ToTensor()) - -cifar_train, cifar_val = torch.utils.data.random_split(cifar_data,[40000,10000],generator=torch.Generator().manual_seed(420)) - -train_loader = DataLoader(cifar_train, batch_size=batch_size, shuffle=False) -validation_loader = DataLoader(cifar_val, batch_size=batch_size, shuffle=False) -test_loader = DataLoader(cifar_test, batch_size= batch_size, shuffle=False) - - -class_correct = list(0. for i in range(10)) -class_total = list(0. for i in range(10)) -with torch.no_grad(): - for data in testloader: - images, labels = data - outputs = net(images) - _, predicted = torch.max(outputs, 1) - c = (predicted == labels).squeeze() - for i in range(4): - label = labels[i] - class_correct[label] += c[i].item() - class_total[label] += 1 - - -for i in range(10): - print('Accuracy of %5s : %2d %%' % ( - classes[i], 100 * class_correct[i] / class_total[i])) - - - -