切换视频源:

CNN 卷积神经网络

作者: Mark JingNB 编辑: 莫烦 2016-10-30

学习资料:

搭建模型

这次我们主要讲CNN(Convolutional Neural Networks)卷积神经网络在 keras 上的代码实现。 用到的数据集还是MNIST。不同的是这次用到的层比较多,导入的模块也相应增加了一些。

from keras.layers import Dense, Activation, Convolution2D, MaxPooling2D, Flatten

首先是数据预处理和model的设置。 然后添加第一个卷积层,滤波器数量为32,大小是5*5,Padding方法是same即不改变数据的长度和宽带。 因为是第一层所以需要说明输入数据的 shape ,激励选择 relu 函数。代码如下

model.add(Convolution2D(
    batch_input_shape=(64, 1, 28, 28),
    filters=32,
    kernel_size=5,
    strides=1,
    padding='same',      # Padding method
    data_format='channels_first',
))
model.add(Activation('relu'))

第一层 pooling(池化,下采样),分辨率长宽各降低一半,输出数据shape为(32,14,14)

model.add(MaxPooling2D(
    pool_size=2,
    strides=2,
    padding='same',    # Padding method
    data_format='channels_first',
))

再添加第二卷积层和池化层

model.add(Convolution2D(64, 5, strides=1, padding='same', data_format='channels_first'))
model.add(Activation('relu'))
model.add(MaxPooling2D(2, 2, 'same', data_format='channels_first'))

经过以上处理之后数据shape为(64,7,7),需要将数据抹平成一维,再添加全连接层1

model.add(Flatten())
model.add(Dense(1024))
model.add(Activation('relu'))

添加全连接层2(即输出层)

model.add(Dense(10))
model.add(Activation('softmax'))

设置adam优化方法,loss函数, metrics方法来观察输出结果

model.compile(optimizer=adam,
              loss='categorical_crossentropy',
              metrics=['accuracy'])

训练

开始训练模型

model.fit(X_train, y_train, epoch=1, batch_size=32,)

输出testlossaccuracy结果

2-3-1.png

降低知识传递的门槛

莫烦很常从互联网上学习知识,开源分享的人是我学习的榜样。 他们的行为也改变了我对教育的态度: 降低知识传递的门槛免费 奉献我的所学正是受这种态度的影响。 通过 【赞助莫烦】 能让我感到认同,我也更有理由坚持下去。

想当算法工程师拿高薪?转行AI无门道?莫烦也想祝你一臂之力,市面上机构繁杂, 经过莫烦的筛选,七月在线脱颖而出, 莫烦和他们合作,独家提供大额 【培训优惠券】, 让你更有机会接触丰富的教学资源、培训辅导体验, 祝你找/换工作/学习顺利~