Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #model_ft = model_ft.cuda()
- nb_samples = 931
- nb_classes = 9
- from __future__ import print_function, division
- import torch
- import torch.nn as nn
- import torch.optim as optim
- from torch.optim import lr_scheduler
- import numpy as np
- import torchvision
- from torchvision import datasets, models, transforms
- import matplotlib.pyplot as plt
- import time
- import os
- import copy
- import torch.utils.data as data_utils
- from torch.utils import data
- data_transforms = {
- 'train': transforms.Compose([
- transforms.RandomResizedCrop(224),
- transforms.RandomHorizontalFlip(),
- transforms.RandomRotation(20),
- transforms.ToTensor(),
- transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
- ]),
- 'test': transforms.Compose([
- transforms.Resize(256),
- transforms.CenterCrop(224),
- transforms.ToTensor(),
- transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
- ]),
- }
- val_loader = data.DataLoader(
- image_datasets['test'],
- num_workers=2,
- batch_size=1
- )
- val_loader = iter(val_loader)
- data_dir = "images"
- image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x),
- data_transforms[x])
- for x in ['train', 'test']}
- dataset_sizes = {x: len(image_datasets[x]) for x in ['train', 'test']}
- print(dataset_sizes)
- class_names = image_datasets['train'].classes
- device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
- # LOOCV
- loocv_preds = []
- loocv_targets = []
- for idx in range(nb_samples):
- print('Using sample {} as test data'.format(idx))
- # Get all indices and remove test sample
- train_indices = list(range(len(image_datasets)))
- del train_indices[idx]
- # Create new sampler
- sampler = data.SubsetRandomSampler(train_indices)
- dataloader = data.DataLoader(
- image_datasets['train'],
- num_workers=2,
- batch_size=1,
- sampler=sampler
- )
- # Train model
- for batch_idx, (samples, target) in enumerate(dataloader):
- print('Batch {}'.format(batch_idx))
- model_ft = train_model(model_ft, criterion, optimizer_ft, exp_lr_scheduler, num_epochs=25) # do I add this line here?
- # Test on LOO sample
- model_ft.eval()
- # test_data, test_target = image_datasets['train'][idx]
- test_data, test_target = val_loader.next()
- test_data = test_data.cuda()
- test_target = test_target.cuda()
- #test_data.unsqueeze_(1)
- #test_target.unsqueeze_(0)
- output = model_ft(test_data)
- pred = torch.argmax(output, 1)
- loocv_preds.append(pred)
- loocv_targets.append(test_target.item())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement