第二层池化后形状变为 7 7 64的原因是因为步长还是过滤器啊

来源:4-22 动手实现CNN卷积神经网络(四)

榴莲痴汉

2018-01-28

过滤器的而为大小和过滤器个数对数据形状的影响都是怎么样的,和步长对形状的影响有什么区别呢,还有平坦化之前形状是 7 7 64,平淡化后还是 7 7 64,那这平坦化的目的是什么呢?创建全连接层的目的和对数据有什么影响,为什么最后经过10个全连接层形状会变成1 1 10 。新人希望老师讲解再详细些,不是很理解

写回答

2回答

Oscar

2018-01-30

你好,你的几个问题都很好诶。我之后也会在第二部分里补充CNN的原理讲解视频。

首先:
你可以想象一个过滤器有点像一个手电筒。它从图片的左上角开始取样(扫描)到图片右下角。

1.过滤器大小主要是指过滤器二维平面的大小,比如我们的例子里是 5 x 5 个单位的一个正方形平面,那这个就是像手电筒发出的光照射在图片上的大小,就是它取样一下去多少“面积”。步长决定隔多少个单位取样一下。过滤器大小和步长一同决定输出的二维的维度大小(width x height, 高度和宽度)和样式。

2. 过滤器个数决定输出的深度(depth。因为二维的那个 width 是 宽度, height 是高度。depth 就是第三个维度:深度/厚度),一个过滤器就好像一个手电筒,它扫一遍就产生深度为一层的输出,就好比烙了一张饼,那么有几个过滤器就是扫描几次,就好像烙了几张饼,就是输出的厚度/深度是多少。

3. 仔细看哦:平坦化前的形状是 [7, 7, 64],三个维度分别是 7,7 和 64。 平坦化之后的形状是 [7 * 7 * 64, ], 也就是 [3136, ] (因为 7 乘以 7 乘以 64 等于 3136)。

4. 卷积神经网络中的全连接层主要用来把之前提取到的各个特征综合起来(加权求和),全连接层的每一个输出都可以看成前一层的每一个结点乘以一个权重系数 Weight,最后加上一个偏置值 Bias 得到),就可以把维度从高维变成低维(当然也可以有激活函数来做非线性化拟合)。我们的例子里有两个全连接层,第一个全连接层的每个神经元,和上一层的每个神经元相连,第二个全连接层的每个神经元,则和第一个全连接层的每个神经元相连。其实全连接层可以转化成卷积层,有类似性,就是将过滤器的尺寸设置为和输入数据的尺寸一致了。

推荐看一下知乎的这篇论题:《全连接层的作用是什么?》,其中有几个比喻还是比较形象的。

这篇讲CNN的文章不错,里面还有静态图和动图,方便理解,是英文的:http://cs231n.github.io/convolutional-networks
其对应的中文翻译版本在:https://zhuanlan.zhihu.com/p/22038289

0
4
榴莲痴汉
如果是的话,有什么实际作用呢
2018-02-10
共4条回复

嫌疑人x

2019-09-19

这里的平坦化还是不理解,平坦化前形状是[7,7,64],64是深度对吧,那么形状该怎么理解?二维?三维?我觉得应该是三维吧!而且平坦化前后7*7*64=3136,这个怎么都不会变的,那么,我是不是可以理解平坦化实际上是用一维卷积核做的全连接???希望老师能给予回答!

0
0

基于Python玩转人工智能最火框架 TensorFlow应用实践

机器学习入门,打牢TensorFlow框架应用是关键!

2214 学习 · 688 问题

查看课程