我是靠谱客的博主 受伤秋天,最近开发中收集的这篇文章主要介绍深度学习之CNN可视化,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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):
conv
把每一层的激活值中挑选最大的激活值,通过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可视化所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部