李宏毅MachineLearning学习笔记

Why CNN for Image

  1. 可以减少fully connected network的参数量

  2. 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

  1. 每个filter相当于一个neural,filter里面的数字是训练出来的
  2. 同一个filter可以检测出一张图片中不同区域的特征
  3. 一个filter之后会生成一个image,这一层生成的image合起来就是feature map
  4. filter的channel数和输入的channel数相同
  5. 因为convolution不需要连接所有的输入值,每个filter只需要连接到相关的就好,而且中间还可以share一些参数,从而大大减少参数量

Max Pooling

  1. Max Pooling 可以将image的大小缩小
  2. 每一层output多少feature map取决于这一层有多少filter

Flatten

  1. 将得到的图片拉直(变成一维)

P.S.

Keras programming

  1. Convolution

    1
    model2.add(Convolution2D(25,3,3),input_shape=(1,28,28))
  2. Max Pooling

    1
    model2.add(MaxPooling2D((2,2)))

    parameters说明见下图

output 的大小及每个filter的parameters数量

  1. flatten和后续

    1
    2
    3
    4
    5
    6
    7

    model2.add(Flatten())

    model2.add(Dense(output_dim=100))
    model2.add(Activation('relu'))
    model2.add(Dense(output_dim=10))
    model2.add(Activation('softmax'))

Deep Style

风格化图片 A Neural Algorithem of Artistic Style