文章目录
前言
前面都对深度学习的框架做了学习,现在学习最重要的CNN。
一、CNN与图像处理
CNN常用于影像处理。
实际上在影像处理上,我们希望一层层layer看到的东西是越来越深入的。
在影像处理上,CNN比一般的training neural network的优势:CNN简化了neural network的架构,减少使用的参数。
可以将原来fully connect layer中一些参数拿掉的原因:
1.每一个neural只需要连接到图片的一小块地方。(convolution)
2.同样的pattern但在image的不同位置,这时候,我们不需要用两组参数去侦察。(convolution)
3.对于一个图像做subsampling 并不会影响理解,但可以减少参数(max pooling)
二、CNN架构
input image ——【 convolution (layer)<——> Max Pooling 】(repeat)——flatten——fully connected feedforword network —— output
convolution(卷积层)
例子:
1.convolution layer里面,有一组filter。利用3* 3的filter(和neuron相似)去侦察6* 6里面的一部分。(解决上文1)
2.将这个filter在6* 6input表面移动(移动距离为stride,这里假设为1),每次做内积,于是得到了4* 4的结果。(解决上文2)
3.由于有n个filter 于是得到了n个4*4的image
一些词语概念的理解
对featrue map,卷积核(kernel),卷积核个数,过滤器,filter,channel的理解
feather map:三维数据就有三个feather map
重点:不管输入图像的深度为多少,经过一个卷积核(filter),最后都通过下面的公式变成一个深度为1的特征图
参考链接 https://blog.csdn.net/xys430381_1/article/details/82529397
maxpooling(池化层)
根据上文结束的convolution 然后我们可以得到44的matrix。然后继续划分成四个方块,取平均或者最大,就可以继续缩小image(成22)。
flatten
将feature map拉直,为丢入fully connected feedforward做准备。
三、分析CNN学习
1.分析filter
定义:Degree of the activation of teh k-th filter,即第k个Degree有多少active,这个程度通过filter output里所有值的element 的summation得知。
想知道第k个filter作用:运用gradient descent 找出一张图片取使得active degree最大。
通过minist得到每一个filter的工作就是detain某一张pattern。类似纹路的图片。
2.分析全连接层
也是用gradient ascent 方法针对某几个 neural output 找到一张imageX,结果如下图
3.分析output
也是用gradient ascent 方法针对 全部 output(output就是10维,每一维度就对应一个digit) 找到一张imageX,结果如下图
让图片更像数字
有些图像虽然可以让结果很符合,但却不符合数字的假设。
解决方法:加上constraint。比如希望找到的image 大部分都是无颜色,小部分才有颜色,加上这个constraint,结果如下
Deep Dream
让负值变得更负,正的变成更正。
相当于放大图片特征。
Deep Style
input一张图,得到另一种风格——风格迁移。
input 左边的图和右边的图,filter能够体现两张图的精髓。只要输入的图片有左边的content 有右边的style 就可以得到最后那一张图。
总结
学习完CNN之后,算是深度学习入门了?对深度学习的框架也清晰了很多,接下来应该通过代码学习,进一步了解深度学习的代码,继续扩展C深度学习的知识面。