//李宏毅视频官网:http://speech.ee.ntu.edu.tw/~tlkagk/courses.html                                                    点击此处返回总目录

//邱锡鹏《神经网络与深度学习》官网:https://nndl.github.io

 

下面秒讲一下怎么用Keras实现CNN。

在compile(下配置)和fitting(训练)的部分,其实跟以前的一模一样。唯一要改的是你的网络结构和输入格式,本来在DNN里面输入的是一个向量,现在如果是CNN的话,要给他一个3维的向量(tensor)。

                             怎么用Keras实现CNN

怎么实现卷积层呢?使用model.add(Convolution2D())实现。(25,3,3)表示使用25个卷积核,每个卷积核是3*3的size。input_shpe=(28,28,1)表示图像是28*28的,1表示是黑白的,如果是彩色的图,就写3。

               怎么用Keras实现CNN

下采样层也很简单。用model2.add(MaxPooling2D())增加一个MaxPooling的层。(2,2)意思是我们把2*2的feature map里面的像素拿出来,每次选最大的那一个。

                怎么用Keras实现CNN

 

讲到这里,我们再总结一下。假设我们输入的是1*28*28的图像。

第一个卷积层,有25个卷积核,每个卷积核是3*3的size。经过第一个卷积层,得到的是25个26*26的图片(有几个卷积核,得到的channel就是几)。这一层每个滤波器有多少参数呢?卷积核size是3*3,有1个通道,所以有9个参数。

第一个采样层,得到25*13*13。

第二个卷积层,有50个卷积核。所以输出50*11*11。这一层每个滤波器有多少个参数呢?size是3*3,但是它的input的通道数是25,所以每个滤波器参数有25*3*3=225个。

第二个采样层,得到50*5*5.

 

                      怎么用Keras实现CNN

 

下面继续看,做Flatten,就是拉直。调用model.add(Flatten())就好了。得到的是1250维的向量。

 

                     怎么用Keras实现CNN

 

最后把1250维的向量丢到全连接网络里面。这个前面讲过。

               怎么用Keras实现CNN

 

 

代码:

暂略,回来补。