介绍
小编给大家分享一下怎么利用pytorch实现对CIFAR-10数据集的分类,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
<强>步骤如下:强>
1。使用torchvision加载并预处理CIFAR-10数据集,
2。定义网络
3。定义损失函数和优化器
4。训练网络并更新网络参数
5。测试网络
<强>运行环境:强>
windows + python3.6.3 + pycharm + pytorch0.3.0 import torchvision  as 电视 import torchvision.transforms  as 转换 import torch  as t 得到torchvision.transforms import  ToPILImage 显示=ToPILImage(),,,, #把张量转成图像,方便可视化 import matplotlib.pyplot  as plt import torchvision import numpy  as np # # # # # # # # # # # # # # #数据加载与预处理 时间=transform transforms.Compose ([transforms.ToTensor(), #转为张量 ,,,,,,,,,,,,,,,transforms.Normalize((0.5, 0.5, 0.5),(0.5, 0.5, 0.5), #归一化 ,,,,,,,,,,,,,,,) #训练集 小火车=tv.datasets.CIFAR10 (root=& # 39;/python 项目/测试/数据/& # 39;, ,,,,,,,,,,,,,,火车=True, ,,,,,,,,,,,,,,下载=True, ,,,,,,,,,,,,,,变换=变换) 装载量=t.utils.data.DataLoader(小火车, ,,,,,,,,,,,,,,,,,batch_size=4, ,,,,,,,,,,,,,,,,,洗牌=True, ,,,,,,,,,,,,,,,,,num_workers=0) #测试集 testset=tv.datasets.CIFAR10 (root=& # 39;/python 项目/测试/数据/& # 39;, ,,,,,,,,,,,,,,火车=False, ,,,,,,,,,,,,,,下载=True, ,,,,,,,,,,,,,,变换=变换) 试验载荷=t.utils.data.DataLoader (testset, ,,,,,,,,,,,,,,,,,batch_size=4, ,,,,,,,,,,,,,,,,,洗牌=True, ,,,,,,,,,,,,,,,,,num_workers=0) 类=(& # 39;平面# 39;& # 39;车# 39;,& # 39;鸟# 39;,& # 39;猫# 39;,& # 39;鹿# 39;,& # 39;狗# 39;,& # 39;青蛙# 39;,& # 39;马# 39;,& # 39;船# 39;,& # 39;卡车# 39;) (数据、标签)=小火车[100] print(类(标签)) 显示((数据+ 1)/2).resize ((100100)) #,dataiter=iter(装载量) #,图片,标签=dataiter.next () #,print (& # 39; & # 39; . join(& # 39; 11% & # 39; %类[标签[j]], for j 拷贝范围(4))) #,显示(tv.utils.make_grid(图片+ 1)/2).resize ((400100)) def imshow (img): 时间=img 才能;img /, 2, + 0.5 时间=npimg 才能;img.numpy () plt.imshow才能(np.transpose (npimg, (1,, 2,, 0))) 时间=dataiter iter(装载量) 图片,,labels =, dataiter.next () print (images.size ()) imshow (torchvision.utils.make_grid(图片) plt.show() #关掉图片才能往后继续算 # # # # # # # # # # # # # # # # # # # # # # # # #定义网络 import torch.nn  as 神经网络 import torch.nn.functional  as F class 净(nn.Module): def 才能__init__(自我): ,,,超级(净,自我). __init__ () ,,,self.conv1=nn.Conv2d (3、6、5) ,,,self.conv2=nn.Conv2d(5) 6日16日 ,,,self.fc1=nn.Linear (16 * 5 * 5120) ,,,self.fc2=nn.Linear (120、84) ,,,self.fc3=nn.Linear(84年,10) def 才能向前(自我,,x): ,,,x =, F.max_pool2d (F.relu (self.conv1 (x)), 2) ,,,x =, F.max_pool2d (F.relu (self.conv2 (x)), 2) ,,,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 净=() 打印(净) # # # # # # # # # # # # #定义损失函数和优化器 得到torch import  optim 标准=nn.CrossEntropyLoss () 优化器=optim.SGD (net.parameters (), lr=0.01,动量=0.9) # # # # # # # # # # # # # #训练网络 得到torch.autograd import 变量 import 时间 时间=start_time time.time () for epoch 拷贝范围(2): ,running_loss=0.0 for 才能;我data 拷贝列举(装载量,0): ,,,#输入数据 ,,,=数据输入,标签 null null null null null null null null null null null null null null null null null null怎么利用pytorch实现对CIFAR-10数据集的分类