深度学习入门之PyTorch学习笔记#2

今天学习的是卷积神经网络,并建立了一个简单的CNN来做MNIST集的分类。

感觉入门CNN首先需要注意的就是各个卷几层和池化层的输入、输出维度的计算,需要保证输出的尺寸是整数:

卷几层输出的计算公式:(W-F+2P)/S+1

W是输入数据的大小,F是卷积层中神经元的感受野尺寸,P是边界0填充的数量,S表示步长。

池化层的输出公式:(W-F)/S+1,因为池化层很少采用0填充。

0填充的主要作用就是在图片四周填充0,主要是保证输入数据和输出数据有相同的空间尺寸,在pytorch里是padding参数,=1表示四周各填充1个像素的0,防止图像四周区域在经过卷积层后特征丢失。

之前看到一篇利用CNN+DQN做Cartpole游戏的增强学习,在里面CNN的卷积层就没有使用padding,在图像的边缘应该在一些卷积层出现了丢失,考虑到这个游戏是要保持中间的棍子直立,游戏基本都在图像的中心区域,所以对边缘的丢失是可以接受的吧.

按照书里的练习做了一个简单的CNN,包括4个卷积层,在第1和3个卷积层后面增加了池化层。

这是这个简单的CNN在MNIST集上达到了0.99的精度

Model Test loss: 0.021262, acc: 0.993100

下面是和前面一篇学习笔记中做的全连接神经网络的采用相同的学习率和迭代次数时进行的比较:

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180107G05D0H00?refer=cp_1026

同媒体快讯

相关快讯

扫码关注云+社区