初识CNN

终于学到CNN了,great。上个假期看的imooc的tensorflow实现CNN完全没法理解是什么意思,现在终于明白了

一、 卷积层

    不同于ANN,我们的CNN是并不是想象成结点形式进行计算,他会想象成一个带厚度的矩阵。每一层代表了一个特征(垂直线条、水平线条)。将这些矩阵一次次计算,最后得到一个一维输入。这个一维输入可以看作图像处理的输出。将这个一维向量放入ANN中进行计算,得到预测的结果

    ① 过滤器filter,所谓过滤器,只不过是一个指定大小的矩阵。而过滤器的计算并不是矩阵乘法,只是将每一个地方的数值进行相加,quiet simple。()

初识CNN_第1张图片

我们已经知道了filter是怎么用的。

其实filter有一个特性,就是说他会利用矩阵的乘法使得计算的结果保留特殊的纹理(见下图)

初识CNN_第2张图片

初识CNN_第3张图片

http://setosa.io/ev/image-kernels/

这里贴一个巨神的网站,非常好的帮助我们理解filter。

 ② 池化层。当时学的时候吓死劳资了,网上的博客说的和玄学一样,极大的打击了我的信心。什么池化层?一句话描述:通过对特定位置的矩阵中元素取最大值或者平均值,减小矩阵的规模、提高计算效率

 ③ stride和paddle,无需赘述。明白了这三个,如何卷积我们就搞懂了。


二、 如何计算

    ①说到底,计算的是带有一定厚度的矩阵,每个矩阵带有一个特征。以彩色照片为例

初识CNN_第4张图片

三层,分别代表三个颜色,每一层矩阵记录了信息

初识CNN_第5张图片

重点来了!!!!!

我的filter,为了计算这个,无疑也是三层,但是他会将三层一并计算,得到一层

初识CNN_第6张图片

但是我们不止一个filter啊,假如我们有100个filter,就可以得到当前大小且深度为100的矩阵。

我们想一下,这个是不是跟我们一开始的三层狗狗矩阵很像了?

接着继续重复,filter -> pooling -> relu

对,就是这样,很简单的。




你可能感兴趣的:(CNN,DP_L)