欢迎订阅本专栏:《PyTorch深度学习实践》
订阅地址:https://blog.csdn.net/sinat_33761963/category_9720080.html
- 第二章:认识Tensor的类型、创建、存储、api等,打好Tensor的基础,是进行PyTorch深度学习实践的重中之重的基础。
- 第三章:学习PyTorch如何读入各种外部数据
- 第四章:利用PyTorch从头到尾创建、训练、评估一个模型,理解与熟悉PyTorch实现模型的每个步骤,用到的模块与方法。
- 第五章:学习如何利用PyTorch提供的3种方法去创建各种模型结构。
- 第六章:利用PyTorch实现简单与经典的模型全过程:简单二分类、手写字体识别、词向量的实现、自编码器实现。
- 第七章:利用PyTorch实现复杂模型:翻译机(nlp领域)、生成对抗网络(GAN)、强化学习(RL)、风格迁移(cv领域)。
- 第八章:PyTorch的其他高级用法:模型在不同框架之间的迁移、可视化、多个GPU并行计算。
LeNet网络,做图像的同学肯定超级熟悉,这是1998年提出的一种卷积神经网络,当时风靡于手写数字识别。
关于它的理论知识于网络结构,可以参看我的博客:,也可以在网上搜索,有非常多的文章来介绍这个经典的模型。
Letent的模型结构由卷积-池化-卷积-池化-全连接-全连接-高斯连接这几个步骤组成。现在我们来一起看看如何构建LeNet,并进行手写数字的识别。
6.2.1 准备数据集
MINST是一个手写数字数据库,官网地址为:http://yann.kecun.com/exdb/mnist, 他是非常经典的一个数据集,由60000张训练样本,10000张测试样本,每张图片的尺寸是28*28。
由于这是一个很经典的用于学习和练习的数据集,PyTorch提供了快速下载和加载NIMIST数据集的方法,无需我们自己去官网下载了。torchvision就是PyTorch准们便些的处理图像的工具包,其中包含了图像预处理,加载等的方法,还包括一些经过预训练的经典卷积神经网络模型。现在我们来用Torchvision来下载、加载、预处理MINIST数据集。
import torch
from torchvision import datasets, transforms
import torch.utils.data as Data
# 转换特征
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.1307,),(0.3081,))
])
# 下载、加载、预处理数据
trainset = datasets.MNIST('data', train=True, download=True, transform=transform)
testset = datasets.MNIST('data', train=False, download=True, transform=transform)
# 转换成批量迭代器:DataLoader
trainloader = torch.utils.data.dataLoader(trainset, batch_size=4, shuffle=True, num_work=2)
testloader = torch.utils.data.dataLoader(testset, batch_size=4, shuffle=False, num_work=2)
解释:
(1)torchvision.transforms.Compose()是用来设置预处理的方法,其参数是一个list,list中是预处理方法。
(2)datasets.M