怎么利用pytorch实现对CIFAR-10数据集的分类

  介绍

小编给大家分享一下怎么利用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数据集的分类