import torchvision as tv import torchvision.transforms as transforms from torchvision.transforms import ToPILImage import torch as t from torch.autograd import Variable import torch.nn as nn import torch.nn.functional as F import torch.optim as optim transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5)) ]) trainset = tv.datasets.CIFAR10( root="./data", train=True, download=True, transform=transform ) trainloader = t.utils.data.DataLoader( dataset=trainset, batch_size=100, shuffle=True ) testset = tv.datasets.CIFAR10( root="./data", train=False, download=True, transform=transform ) testloader = t.utils.data.DataLoader( dataset=testset, batch_size=100, shuffle=False ) class Net(nn.Module): def __init__(self): super(Net,self).__init__() self.conv1 = nn.Conv2d(3,6,5) 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 = F.max_pool2d(F.relu(self.conv1(x)),(2,2)) x = F.max_pool2d(F.relu(self.conv2(x)),2) x = x.view(x.size()[0], -1) x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) return x net = Net() print(net) device = t.device("cuda") net.to(device) criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(net.parameters(), lr=0.003,momentum=0.9) for epoch in range(200): running_loss = 0.0 for i,(inputs,labels) in enumerate(trainloader): inputs,labels = inputs.to(device),labels.to(device) inputs,labels = Variable(inputs),Variable(labels) optimizer.zero_grad() outputs = net(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() running_loss += loss.data.item() if (i+1) % 100 == 0: print(‘[Epoch:%d/%d],[Batch:%d/%d] loss: %.3f‘ % (epoch+1, 200, i+1,len(trainloader), running_loss/100)) running_loss = 0.0 print("Finished Training!") correct = 0 total = 0 for images,labels in testloader: images,labels = images.to(device),labels.to(device) outputs = net(Variable(images).cuda()) _,predicted = t.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum() print("Accuracy of 10000 test images: %d %%" % (100 * correct / total))
最后结果:60%
【代码来自于《深度学习框架PyTorch:入门与实践》】
原文:https://www.cnblogs.com/liualex1109/p/11815385.html