深层神经网络模型(上)
本次开启深度学习第五回,基于Pytorch的深层神经网络模型。在上回当中,我们采用了两层神经网络完成了非线性数据的二分类。本回将再进行一次升级:采用深层神经网络,进行10分类;训练数据量也进行扩展,采用开源的mnist数据集。
本次学习,借助的平台是PyCharm 2024.1.3,python版本3.11 numpy版本是1.26.4,pytorch版本2.0.0+cu118
文章目录
前言
正文开启前,先简述几个概念:
1、mnist数据集
MNIST数据集是手写数字图像数据集,常常应用于机器学习的学习和训练。图像有10个类别,包含0~9个数字。其中,每个图像的像素尺寸为28x28,像素灰度范围从0(黑)到255(白)。MNIST数据集分为两个子集:训练集和测试集。(训练集是训练模型时用的数据,测试集是检测已完成训练模型的数据)
2、数据加载器
在之前的几回学习中,我们接触的模型训练数据都较小,可以直接加载训练。当训练数据量较大时,若我们仍然采用这种直接加载的方式,不仅会消耗大量内存,还会让程序运行缓慢甚至崩溃。这个时候就可以考虑使用数据加载器,它可以将数据分成小批次进行加载,并自动完成数据的批量加载、数据顺序打乱等操作。由于本回的模型数据较大,因此我们会用到Pytorch提供的数据加载器DataLoader。
3、交叉熵损失函数(cross entropy Loss)
交叉熵(cross entropy)用来衡量两个概率分布间的差异,或者说计算出两个概率分布之间的距离。用在神经网络中,交叉熵损失函数可实现预测标签的概率分布与实际值标签概率分布之间的比较,从而获得模型的损失值(交叉熵越大,损失值越大)。
接下来就是思路分享,先上引用代码:
import numpy as np
import torch
import time
from torchvision.datasets import mnist
from torch import nn
from torch.autograd import Variable
from torch.utils.data import DataLoader
由于这里采用PyTorch 的 torchvision 库来加载 MNIST 数据集的方式(torchvision.datasets 模块中含有多个常见数据集的类),因此在引用上要加上这行代码 from torchvision.datasets import mnist。
一、数据准备
1、准备mnist数据集
数据集有两部分,一部分是训练集train_set ,另一部分是测试集test_set 。这里可以调用Pytorch自带的数据集获取函数mnist.MNIST()。代码如下:
train_set = mnist.MNIST('./Mnist_data', train=True, transform=data_treating)
test_set = mnist.MNIST('./Mnist_data', train=False, transform=data_treating)
如果没有准备mnist数据集,则需要下载数据集(代码只会下载一次)。方式如下:
train_set = mnist.MNIST('./Mnist_data', train=True, transform=data_treating,download=True)
从上面代码可以看出,只需要多增加一个参数download,并将参数设定为True,就可下载数据集了。
2、数据转换
在上面的代码中,data_treating表示的数据转换函数的名字。转换函数代码如下:
def data_treating(data):
data = np.array(data, dtype='float32') / 255
data = (data -

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



