深度学习

基础知识和各种网络结构实战 ...


pytorch对MNIST分类

  • 深度学习
  • 前言
  • 一、导入第三方库
  • 二、下载MNIST数据集
  • 三、创建神经网络模型
  • 四、训练数据集
  • 五、测试
  • 完整代码
  • 总结

前言

pytorch实现


一、导入第三方库

import torch
from torch.utils.data import DataLoader
import torchvision.datasets as da
import torchvision.transforms as transforms
import torch.nn as nn
from torch.autograd import Variable
import numpy as np

DataLoader为下载MNIST数据集的库

二、下载MNIST数据集

train_dataset=da.MNIST(root='/pymnist', train=True,      transform=transforms.ToTensor(), download=True)
test_dataset=da.MNIST(root='/pymnist',  train=False,    transform=transforms.ToTensor(),  download=True)
#加载数据
train_loader=torch.utils.data.DataLoader(dataset=train_dataset,batch_size=batch_size,shuffle=True)
test_loader=torch.utils.data.DataLoader(dataset=test_dataset,batch_size=batch_size,shuffle=True)

root=’/pymnist’用来选择数据根目录
train=True 用来选择训练数据集
transform=transforms.ToTensor()用来转为tensor
shuffle=True用来打乱数据

三、创建神经网络模型

# 创建神经网络模型
class neural_Net(nn.Module):def __init__(self, input_size, hidden_size, out_put):super(neural_Net, self).__init__()self.layer1 = nn.Linear(input_size, hidden_size)  self.layer2 = nn.Linear(hidden_size, out_put)  def forward(self, x):out = self.layer1(x)  out = torch.relu(out)  out = self.layer2(out)  return outneural_net= neural_Net(input_size, hidden_size, out_put)
print(neural_net)

四、训练数据集

learning_rate = 1e-1
num_epoches = 5
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(neural_net.parameters(), lr=learning_rate)  # 使用随机梯度下降
for epoch in range(num_epoches):print('current epoch = %d' % epoch)for i, (images, labels) in enumerate(train_loader):  images = Variable(images.view(-1, 28 * 28))labels = Variable(labels)outputs = neural_net(images)  loss = criterion(outputs, labels)  # 计算lossoptimizer.zero_grad()  loss.backward()  optimizer.step()  if i % 100 == 0:print('current loss = %.5f' % loss.item())print('训练完成')

current epoch = 0
current loss = 2.30684
current loss = 0.46591
current loss = 0.35780
current loss = 0.34935
current loss = 0.25930
current loss = 0.26343
current epoch = 1
current loss = 0.30920
current loss = 0.26891
current loss = 0.19270
current loss = 0.35991
current loss = 0.38737
current loss = 0.21648
current epoch = 2
current loss = 0.21281
current loss = 0.23885
current loss = 0.15142
current loss = 0.16950
current loss = 0.13368
current loss = 0.21758
current epoch = 3
current loss = 0.25709
current loss = 0.19445
current loss = 0.13137
current loss = 0.11100
current loss = 0.12425
current loss = 0.22953
current epoch = 4
current loss = 0.12090
current loss = 0.20553
current loss = 0.11617
current loss = 0.09296
current loss = 0.09327
current loss = 0.12168

五、测试

total=0
correct=0
for images,labels in test_loader:images=Variable(images.view(-1,(28*28)))outputs=neural_net(images)_,predicts=torch.max(outputs.data,1)total+=labels.size(0)correct+=(predicts==labels).sum()
print('精度=%.2f'%(100*correct/total))

精度=96.19

完整代码


# 开发时间 ;2021/6/20 0020 22:12
import torch
from torch.utils.data import DataLoader
import torchvision.datasets as da
import torchvision.transforms as transforms
import torch.nn as nn
from torch.autograd import Variable
import numpy as np
batch_size = 100#批大小为100#minist dataset
train_dataset=da.MNIST(root='/pymnist', #选择数据根目录train=True,      #选择训练数据集transform=transforms.ToTensor(),  #转为tensordownload=True)   #从网上下载
test_dataset=da.MNIST(root='/pymnist',  #选择数据根目录train=False,     #选择测试数据集transform=transforms.ToTensor(),  #不考虑使用任何数据预处理download=True)   #从网上下载
#加载数据
train_loader=torch.utils.data.DataLoader(dataset=train_dataset,batch_size=batch_size,shuffle=True)#打乱数据
test_loader=torch.utils.data.DataLoader(dataset=test_dataset,batch_size=batch_size,shuffle=True)#定义神经网络各层
input_size = 784 #28*28
hidden_size = 500
out_put= 10 #输出为10个类别# 创建神经网络模型
class neural_Net(nn.Module):def __init__(self, input_size, hidden_size, out_put):super(neural_Net, self).__init__()self.layer1 = nn.Linear(input_size, hidden_size)  # 从输入到隐藏层的线性处理self.layer2 = nn.Linear(hidden_size, out_put)  # 从隐层到输出层的线性处理def forward(self, x):out = self.layer1(x)  # 输入层到隐藏层的线性计算out = torch.relu(out)  # 隐藏层激活out = self.layer2(out)  # 输出层,注意,输出层直接接lossreturn outneural_net= neural_Net(input_size, hidden_size, out_put)
print(neural_net)# 训练learning_rate = 1e-1  # 学习率
num_epoches = 5
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(neural_net.parameters(), lr=learning_rate)  # 使用随机梯度下降
for epoch in range(num_epoches):print('current epoch = %d' % epoch)for i, (images, labels) in enumerate(train_loader):  # 利用enumerate取出一个可迭代对象的内容images = Variable(images.view(-1, 28 * 28))labels = Variable(labels)outputs = neural_net(images)  # 将数据集传入网络做前向计算loss = criterion(outputs, labels)  # 计算lossoptimizer.zero_grad()  # 在做反向传播之前先清除下网络状态loss.backward()  # loss反向传播optimizer.step()  # 更新参数if i % 100 == 0:print('current loss = %.5f' % loss.item())print('finished training')#测试集准确度测试
#预测
total=0
correct=0
for images,labels in test_loader:images=Variable(images.view(-1,(28*28)))outputs=neural_net(images)_,predicts=torch.max(outputs.data,1)total+=labels.size(0)correct+=(predicts==labels).sum()
print('精度=%.2f'%(100*correct/total))

总结

期待大家和我交流,留言或者私信,一起学习,一起进步!

pytorch对MNIST分类相关推荐

  1. 基于pytorch后量化(mnist分类)---浮点训练vs多bit后量化vs多bit量化感知训练效果对比

    基于pytorch后量化(mnist分类)-浮点训练vs多bit后量化vs多bit量化感知训练效果对比 代码下载地址:下载地址 试了 bit 数为 1-8 的准确率,得到下面这张折线图: 发现,当 b ...

  2. 基于pytorch的MNIST数据集的四层CNN,测试准确率99.77%

    基于pytorch的MNIST数据集的四层CNN,测试准确率99.77% MNIST数据集 环境配置 文件存储结构 代码 引入库 调用GPU 初始化变量 导入数据集并进行数据增强 导入测试集 加载测试 ...

  3. 用PyTorch实现MNIST手写数字识别(非常详细)

    ​​​​​Keras版本: Keras入门级MNIST手写数字识别超级详细教程 2022/4/17 更新修复下代码.完善优化下文章结构,文末提供一个完整版代码. 可以在这里下载源码文件(免积分): 用 ...

  4. LESSON 10.110.210.3 SSE与二分类交叉熵损失函数二分类交叉熵损失函数的pytorch实现多分类交叉熵损失函数

    在之前的课程中,我们已经完成了从0建立深层神经网络,并完成正向传播的全过程.本节课开始,我们将以分类深层神经网络为例,为大家展示神经网络的学习和训练过程.在介绍PyTorch的基本工具AutoGrad ...

  5. pytorch实现文本分类_使用变形金刚进行文本分类(Pytorch实现)

    pytorch实现文本分类 'Attention Is All You Need' "注意力就是你所需要的" New deep learning models are introd ...

  6. python数据集的预处理_关于Pytorch的MNIST数据集的预处理详解

    关于Pytorch的MNIST数据集的预处理详解 MNIST的准确率达到99.7% 用于MNIST的卷积神经网络(CNN)的实现,具有各种技术,例如数据增强,丢失,伪随机化等. 操作系统:ubuntu ...

  7. Pytorch实现mnist手写数字识别

    2020/6/29 Hey,突然想起来之前做的一个入门实验,用pytorch实现mnist手写数字识别.可以在这个基础上增加网络层数,或是尝试用不同的数据集,去实现不一样的功能. Mnist数据集如图 ...

  8. Pytorch搭建常见分类网络模型------VGG、Googlenet、ResNet50 、MobileNetV2(4)

    接上一节内容:Pytorch搭建常见分类网络模型------VGG.Googlenet.ResNet50 .MobileNetV2(3)_一只小小的土拨鼠的博客-CSDN博客 mobilenet系列: ...

  9. pytorch训练MNIST

    本文记录了pytorch训练MNIST数据集的过程,通过本文可熟悉pytorch训练的大体操作过程. 一.导入各种模块 import torch import torch.nn as nn impor ...

最新文章

  1. BizTalk 2006 简单入门示例程序(附源项目文件下载)
  2. 计算机视觉开源库OpenCV之CommandLineParser使用方法
  3. JVM中GC对象配置
  4. 健康证(公共卫生类)
  5. HDFS写入和读取过程
  6. 【openssl】利用openssl完成X509证书和PFX证书之间的互转
  7. boost库 bind/function的使用
  8. simulink 快捷键 运行_【泡泡读者来搞】ROS、Simulink、Carsim的互联与规划、控制算法的验证...
  9. java 字节流写入_Java之基于字节流文件的写入和读取
  10. BOM 之 screen history
  11. 使用一个虚拟环境,但是运用其他环境中的库!【pycharm】
  12. 凸优化有关的数值线性代数知识 2求解已经因式分解的矩阵的线性方程组
  13. kali linux工具词典,Kali字典神器—Crunch
  14. 12v工业计算机主机,ARM一体机 工业电脑,低功耗主机 AM3352
  15. 安装多个电脑杀毒软件
  16. 测试用例之因果图分析法
  17. 六十六条经典禅语名句
  18. 微服务团队_为什么团队文化对于成功的微服务至关重要
  19. 关于DIY eGPU的使用配置心得
  20. 《JAVA程序性能优化》总结

热门文章

  1. ts ‘Promise‘ only refers to a type, but is being used as a value here.
  2. python 实现微信好友分析
  3. “迁移策略+新容器运行时”应对有状态应用的冷热迁移挑战
  4. 【翻译】通过CMD3.1来实现自定义基于海王星主题的Ext JS 4.1应用程序
  5. 美国学生在使用计算机小短文,【嘟嘟老师作文课堂】美国学生这么“搞”作文!...
  6. 360 css grid,【第2210期】使用 CSS 创造艺术
  7. AI性能测试:一向发烧的小米MIX 2S落败荣耀10原因究竟在哪?
  8. 关于virtualbox虚拟机安装Ubuntu异常处理:FATAL: NO bootable medium found! System halted
  9. 台湾生育率全球最低 民众想生却不敢生
  10. python极简教程_Python 极简教程(一)前言