//李宏毅视频官网:http://speech.ee.ntu.edu.tw/~tlkagk/courses.html 点击此处返回总目录 //邱锡鹏《神经网络与深度学习》官网:https://nndl.github.io
下面秒讲一下怎么用Keras实现CNN。 在compile(下配置)和fitting(训练)的部分,其实跟以前的一模一样。唯一要改的是你的网络结构和输入格式,本来在DNN里面输入的是一个向量,现在如果是CNN的话,要给他一个3维的向量(tensor)。
怎么实现卷积层呢?使用model.add(Convolution2D())实现。(25,3,3)表示使用25个卷积核,每个卷积核是3*3的size。input_shpe=(28,28,1)表示图像是28*28的,1表示是黑白的,如果是彩色的图,就写3。
下采样层也很简单。用model2.add(MaxPooling2D())增加一个MaxPooling的层。(2,2)意思是我们把2*2的feature map里面的像素拿出来,每次选最大的那一个。
讲到这里,我们再总结一下。假设我们输入的是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.
下面继续看,做Flatten,就是拉直。调用model.add(Flatten())就好了。得到的是1250维的向量。
最后把1250维的向量丢到全连接网络里面。这个前面讲过。
代码: 暂略,回来补。
|
|
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:怎么用Keras实现CNN - Python技术站