概述
CNN可视化过程
我们现在可以明白,CNN的浅层的filters一般会检测“边缘”、“颜色”等最初级的特征,之后,filters可以识别出各种“纹理纹路”,到深层的时候,filters可以检测出类似“麻花”、“蜘蛛”等等由前面的基础特征组成的图案。
沿着 “将激活值与输入图片对应”这种思路(我的猜测),利用 Deconvnet这种结构,将激活值沿着CNN反向映射到输入空间,并重构输入图像,从而更加清晰明白地知道filters到底识别出了什么
具体的方法,其实是将原来的CNN的顺序完全反过来,但是组件不变(即filters、POOL等等都不变),
如 原来的顺序是: input–>Conv–>relu–>Pool–>Activation
现在就变成了: Activation–>UnPool–>relu–>DeConv–>input
Conv与DeConv
Conv基本上是把一个大图(input)通过filter变成了小图(activation),DeConv就反过来,从小图(activation)通过filter的转置再变回大图(input):
把每一层的激活值中挑选最大的激活值,通过Deconvnet传回去,映射到输入空间重构输入图像。
总结
CNNs的各层并不是黑箱,每一层都有其特定个功能,分工明确。从浅到深,CNN会逐步提取出边缘、颜色、纹理、各种形状的图案,一直到提取出具体的物体。 也就是说,CNNs在训练的过程中,自动的提取了我们的任务所需要的各种特征:
这些特征,越在浅层,越是普遍和通用;
越在深层,就越接近我们的实际任务场景。
因此,我们可以利用以及训练好的CNNs来进行 迁移学习(transfer learning),也就是直接使用CNNs已经训练好的那些filters(特征提取器),来提取我们自己数据集的特征,然后就可以很容易地实现分类、预测等等目的。
【1】CNN窥探
【2】Visualizing and Understanding Convolutional Networks
【3】A guide to convolution arithmetic for deep learning
【4】Visualizing what convnets learn
最后
以上就是受伤秋天为你收集整理的深度学习之CNN可视化的全部内容,希望文章能够帮你解决深度学习之CNN可视化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复