CNN相比与传统的NN最大的区别在于其所拥有的卷积层和pool层(池化层或者说下采样层)。其卷积运算通过三个重要的思想来帮助改进机器学习系统:稀疏交互、参数共享和变等表示。
以下介绍CNN特有及重要的几个部分:卷积层、池化层、Padding操作和Flatten:
1. 卷积层
卷积层:具体原理可参考《深度学习》P202。个人的理解,卷积就是局部的加权平均,将本来离散的信息集中起来,同时因为参数共享的原因,所以比起传统的NN减少了需要更新的权值量。卷积层的重点在于:filter 和 padding。
一、filter:也就是加权所使用的权值
二、padding:就是在filter滑动时有时遇到不能刚好池化时需要使用的技巧。有SAME和VALID这两种模式:
2. 池化层
池化,简言之,即取区域平均值、最大值或者其他方式
3. Flatten操作
这个操作简单来说就是将写成矩阵形式的数据变成向量形式,就好像将数据拉直一样。
4. 卷积神经网络的keras实现
keras不是最好的框架,更不是最有效率的框架,但它一定是最好懂的框架。并不建议专门学keras,但是,在入门时用keras搭个神经网络还是很有成就感的。
参考:
- 李宏毅深度学习课程