【导读】我们在上一节的内容中已经为大家介绍了台大李宏毅老师的机器学习课程的训练DNN的技巧,这一节将主要针对讨论卷积神经网络。本文内容涉及机器学习中CNN的若干主要问题:图像的特性,卷积,池化,flatten以及CNN在keras中的实现。话不多说,让我们一起学习这些内容吧。
课件网址:
http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html
视频网址:
https://www.bilibili.com/video/av15889450/index_1.html
李宏毅机器学习笔记10卷积神经网络
之前我们介绍了DNN,DNN的网络架构如下图所示,很明显,DNN的参数太多,我们需要想办法简化这个网络。
1. 图像的特性
图像有很多优良特性
DNN的隐藏层的作用是提取特征,但有时候图像的特征可能很小,不需要我们搜索整个图像的像素
一个相同特征可能出现在图像不同的地方
对于图像来说,下采样图像并不会改变图像的特征
根据图像的上述特性,我们设计了卷积神经网络
CNN的不同层对应利用图像的不同特性
2. 卷积
对于卷积操作来说,每次卷积需要滤波器
滤波器的实质是一个矩阵,每次矩阵和图像的某个区域的像素做内积得到某个值。
遍历整个图像就是一个卷积操作。
每个滤波器做相同的操作,多个filter得到的最终集合称为feature map,有几个filter最终就会得到几个image。
对于彩色图像来说的,filter变成3*3*3的立方体。
3. 池化
对于max pooling, 4个一组,取平均或者最大值。
一个filter就是一个channel。
Convolution,max pooling这样的结构能在CNN网络里重复很多次
4. Flatten
最后一步就是拉直(flatten)
5. CNN在keras中的实现
CNN在keras中也很容易表示
注意第二部分的卷积层的参数数目是3*3*25,所以每个滤波器有225参数
最后一步拉直后放入全连接网络层
如果想要了解CNN更多的知识,看以下的推荐网站
领取专属 10元无门槛券
私享最新 技术干货