深度学习

CNN个人复习总结

2019-05-15  本文已影响9人  早上起来闹钟又丢了

最近想再巩固一下CNN,看到了一篇非常好的文章,向大佬学习。
作者:Charlotte77
出处:http://www.cnblogs.com/charlotte77/
原文链接:https://www.cnblogs.com/charlotte77/p/7759802.html

1. 卷积特征

image.png

通过第一个卷积核计算后的feature_map是一个三维数据,在第三列的绝对值最大,说明原始图片上对应的地方有一条垂直方向的特征,即像素数值变化较大;而通过第二个卷积核计算后,第三列的数值为0,第二行的数值绝对值最大,说明原始图片上对应的地方有一条水平方向的特征。

feature_map尺寸计算公式:[ (原图片尺寸 -卷积核尺寸)/ 步长 ] + 1

2.卷积核

上图中两个卷积核分别能够提取不同特征,说明我们其实可以把卷积核就理解为特征提取。

3.池化层

池化层的主要目的是通过降采样的方式,在不影响图像质量的情况下,压缩图片,减少参数。

通常来说,池化方法一般有一下两种:

一般采用MaxPooling,这样提取出的是真正能够识别特征的数值,其余被舍弃的数值,对于我提取特定的特征并没有特别大的帮助。但并不是所有情况下Max Pooling的效果都很好,所以具体情况得具体分析,如果加了Max Pooling后效果反而变差了,不如把卷积后不加Max Pooling的结果与卷积后加了Max Pooling的结果输出对比一下,看看Max Pooling是否对卷积核提取特征起了反效果。

4.Zero Padding(补零)

卷积和池化会将图片维度大小降低,如果一直这样添加层,那么图片会越来越小,因此提出Zero Padding(补零)操作,它可以帮助我们保证每次经过卷积或池化输出后图片的大小不变。

image.png

一般会选择尺寸为3 * 3的卷积核和1的zero padding,或者5 * 5的卷积核与2的zero padding,这样通过计算后,可以保留图片的原始尺寸。那么加入zero padding后的feature_map尺寸 =( width + 2 * padding_size - filter_size )/stride + 1

5.Flatten层 & Fully Connected Layer

image.png

6.Keras

卷积函数:

keras.layers.convolutional.Conv2D(filters, kernel_size, strides=(1, 1), padding='valid', data_format=None, dilation_rate=(1, 1), activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)

padding = ‘valid’ 时,没有填充,此时输出的size总比原图的size小.。
padding = ‘same’ 时,用0填充边界,能覆盖原图所有像素,不会舍弃边上的元素;当步长/stride为1时,输出和原图size一致。

池化函数:

keras.layers.pooling.MaxPooling2D(pool_size=(2, 2), strides=None, padding='valid', data_format=None)
上一篇 下一篇

猜你喜欢

热点阅读