深度学习-36-基于PyTorch的卷积神经网络LeNet
文章目录
- 1 卷积神经网络
-
- 1.1 从全连接层到卷积
- 1.2 最简单的架构LeNet-5
- 2 代码示例
-
- 2.1 加载数据集
- 2.2 定义模型
- 2.3 定义损失函数和优化器
- 2.4 定义训练函数
- 2.5 执行训练
- 3 附录
-
- 3.1 整体代码
- 3.2 参考附录
1 卷积神经网络
在 softmax 回归中,我们使用的数据集是图像数据。这种数据的每个样本都是由一个二维像素网格组成,每个像素可能是一个或多个数值,取决于是黑白还是彩色图像。 我们之前的处理方式是通过“展平”,用一个标量表示一个像素,将图像数据展平成一维向量,这会导致图像空间结构信息的缺失,不够有效。
因为这些网络特征元素的顺序是不变的,因此最优的结果是利用先验知识,即利用相近像素之间的相互关联性,从图像数据中学习得到有效的模型。
卷积神经网络就是一类强大的、为处理图像数据而设计的神经网络。
1.1 从全连接层到卷积
在之前的分类问题中,一张图片的形状是 2828,展平后输入维数变成 784,尚可以接受。
那如果输入的图片是百万级像素呢?这意味着模型的输入每次都有百万个维度。即使将隐层的维度设为 1000,这一全连接层的参数个数也有千亿个,想要训练这个模型将不可实现。
但是,目前的图像识别分类技术已经可以很好地处理越来越庞大的图像:这是因为图像中原本就存在着丰富的结构,且这些结构可以被人类和机器学习模型使用。