pytorch实现手写数字识别,pytorch自己做数据集

  pytorch实现手写数字识别,pytorch自己做数据集

  这篇文章主要介绍了PyTorch手写数字数据集进行多分类,损失函数采用交叉熵,激活函数采用雷鲁,优化器采用带有动量的小型批处理g算法,需要的朋友可以参考一下

  

目录
一、实现过程0、导包1、准备数据2、设计模型3、构造损失函数和优化器4、训练和测试二、参考文献

  

一、实现过程

  本文对经典手写数字数据集进行多分类,损失函数采用交叉熵,激活函数采用雷鲁,优化器采用带有动量的小型批处理g算法。

  所有代码如下:

  

0、导包

  进口火炬

  从参考导入变换、数据集

  从torch.utils.data导入数据加载器

  导入火炬. nn .功能为F

  将火炬. optim作为使最优化导入

  

1、准备数据

  批处理大小=64

  转换=转换。撰写([

  转变ToTensor(),

  转变。规格化((0.1307),(0.3081),)

  ])

  # 训练集

  train_dataset=数据集MNIST(root= g :/datasets/mnist ,train=真,下载=假,转换=变换)

  train _ loader=数据加载器(train _ dataset,shuffle=True,batch_size=batch_size)

  # 测试集

  测试数据集=数据集MNIST(root= g :/datasets/mnist ,train=False,download=False,transform=transform)

  test _ loader=数据加载器(test _ dataset,shuffle=False,batch_size=batch_size)

  

2、设计模型

  class Net(torch.nn.Module):

  def __init__(self):

  超级(净,自)。__init__()

  self.l1=torch.nn.Linear(784,512)

  self.l2=torch.nn.Linear(512,256)

  self.l3=torch.nn.Linear(256,128)

  self.l4=torch.nn.Linear(128,64)

  self.l5=torch.nn.Linear(64,10)

  定义向前(自身,x):

  x=x.view(-1,784)

  x=F.relu(self.l1(x))

  x=F.relu(self.l2(x))

  x=F.relu(self.l3(x))

  x=F.relu(self.l4(x))

  回归自我。l5(x)

  模型=网络()

  # 模型加载到国家政治保卫局。参见国家政治保卫局上

  设备=手电筒。设备( cuda :0 如果火炬。cuda。is _ available()else CPU )

  型号至(设备)

  

3、构造损失函数和优化器

  标准=火炬。nn。交叉入口型()

  optimizer=optim .新加坡元(模型参数(),lr=0.01,动量=0.5)

  

4、训练和测试

  定义火车(纪元):

  运行损失=0.0

  对于batch_idx,枚举中的数据(火车_装载机,0):

  输入,目标=数据

  optimizer.zero_grad()

  #向前向后更新

  输出=模型(输入到(设备))

  损耗=标准(输出,目标到(设备))

  loss.backward()

  optimizer.step()

  running_loss=loss.item()

  如果batch_idx % 300==299:

  print([%d,%d] loss: %.3f % (epoch 1,batch_idx 1,running_loss/300))

  运行损失=0.0

  定义测试():

  正确=0

  总计=0

  用火炬号_grad():

  对于测试_加载程序:中的数据

  图像、标签=数据

  输出=模型(图像到(设备))

  _,预测=torch.max(outputs.data,dim=1)

  total=labels.size(0)

  正确=(predicted.cpu()==标签)。sum().项目()

  打印(测试集的准确度为: %d %% % (100 *正确/总计))

  对于范围(10):中的纪元

  火车(时代)

  测试()

  运行结果如下:

  [1300]损失: 2.166

  [1600]损失: 0.797

  [1,900]损失: 0.405

  测试集:的准确度为90 %

  [2,300]损失: 0.303

  [2600]损失: 0.252

  [2,900]损失: 0.218

  测试集:的准确度为94 %

  [3300]损失: 0.178

  [3600]损失: 0.168

  [3900]损失: 0.142

  测试集:的准确度为95 %

  [4300]损失: 0.129

  [4600]损失: 0.119

  [4900]损失: 0.110

  测试集:的准确度为96 %

  [5300]损失: 0.094

  [5600]损失: 0.092

  [5900]损失: 0.091

  测试集:的准确度为96 %

  损失: 0.077

  [6600]损失: 0.070

  损失: 0.075

  测试集:的准确度为97 %

  [7,300]损失: 0.061

  [7600]损失: 0.058

  损失: 0.058

  测试集:的准确度为97 %

  [8300]损失: 0.043

  [8,600]损失: 0.051

  [8900]损失: 0.050

  测试集:的准确度为97 %

  损失: 0.041

  [9600]损失: 0.038

  损失: 0.043

  测试集:的准确度为97 %

  [10,300]损失: 0.030

  [10,600]损失: 0.032

  [10,900]损失: 0.033

  测试集:的准确度为97 %

  

二、参考文献

  [1]https://www.bilibili.com/video/BV1Y7411d7Ys? P=9就是这样。本文介绍了PyTorch手写数字数据集的多分类。更多相关python多分类内容,请搜索热门IT软件开发工作室往期文章或继续浏览以下相关文章。希望大家以后多多支持热门IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: