Why CNN for Image
可以减少fully connected network的参数量
3 Properties
some patterns are much smaller than the whole image
一些特征并不需要去观察整张图片才能得到
the same patterns appear in different regions
相同的特征往往会反复出现在不同区域(不同位置可以使用一个特征识别)
subsampling the pixels will not change the object
人眼其实看不出 subsampling 前后的效果变化
Convolution
- 每个filter相当于一个neural,filter里面的数字是训练出来的
- 同一个filter可以检测出一张图片中不同区域的特征
- 一个filter之后会生成一个image,这一层生成的image合起来就是feature map
- filter的channel数和输入的channel数相同
- 因为convolution不需要连接所有的输入值,每个filter只需要连接到相关的就好,而且中间还可以share一些参数,从而大大减少参数量
Max Pooling
- Max Pooling 可以将image的大小缩小
- 每一层output多少feature map取决于这一层有多少filter
Flatten
- 将得到的图片拉直(变成一维)
P.S.
Keras programming
Convolution
1
model2.add(Convolution2D(25,3,3),input_shape=(1,28,28))
Max Pooling
1
model2.add(MaxPooling2D((2,2)))
parameters说明见下图
output 的大小及每个filter的parameters数量
flatten和后续
1
2
3
4
5
6
7# flatten
model2.add(Flatten())
# fully connected feedforward network
model2.add(Dense(output_dim=100))
model2.add(Activation('relu'))
model2.add(Dense(output_dim=10))
model2.add(Activation('softmax'))