Pytorch入门(二):MNIST-手写数字识别-训练模型

前情提要

上一篇文章我们讲了搭建一个神经网络模型,不知道大家有没有注意到,代码里面其实是多了两个与网络结构图中不一样的地方,就是这样的两行代码。

//__init__
self.drop1 = nn.Dropout(0.5)
//forward
x = self.drop1(x)

其实这是一种优化神经网络的思想,叫做丢弃一部分参数。也就是说,随机地在一层网络中选取一定数量的参数,不让它们参与下一层网络的计算。由于每次选取的参数都是随机的,所以它能够在一定程度上避免网络进入一种“过拟合”的状态。
何为过拟合?
意思就是模型在测试集上的数据太漂亮了,准确率高达99.9%!但是在测试集上的结果却不是令人满意的。而这往往就是因为网络中一些参数的权重过大,导致影响了网络的结果造成的。
所以采用dropout的方法,随机的弃用一些参数,这样可以使得我们的模型在训练集和测试集上都能有个不错的效果。

加载数据集数据

训练一个网络模型,我把它简要的分为以下几个步骤:搭建网络、加载数据集、训练网络/测试网络、保存模型、验证模型。上一篇文章我们已经搭建了网络,那么这一章我们就来讲讲如何加载数据集。
针对数据集加载,其实torch内置了一些比较流行的官方数据集,直接用torchvision就可以使用并且加载,例如MNIST、Cifar、Fashion-MNIST等。

import torch.utils.data
import torchvision

train_data = torchvision.datasets.MNIST(root="../dataset/train_set", train=True, transform=torchvision.transforms.ToTensor(),
                                        download=False)
test_data = torchvision.datasets.MNIST(root="../dataset/test_set", train=False, transform=torchvision.transforms.ToTensor(),
                                       download=False)

train_data_size = len(train_data)
test_data_size = len(test_data)
print("训练数据集的大小为:{}".format(train_data_size)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值