2017-02-15 65 views
2

我目前正在与keras合作,并希望可视化每个图层的输出。当有一个神经网络输出层的可视化时,如下面的例子,这是MNIST手写数字识别。神经网络图层的输出有哪些用途?

  1. 什么样的信息或见解确实从这些图像
  2. 研究员增益是如何这些图像解释
  3. 如果你会选择看层的输出,你有什么选择标准?

非常感谢您的任何意见或建议。谢谢。

enter image description here

+0

你能提供有关您使用网络和图像的详细信息您呈现:

图片从借来的? –

+0

感谢您的评论。假设我正在尝试使用VGG16预先训练的模型对数字进行分类器手写,并且我输入了一个手写数字的32x32图像。上面的图像是第10层的输出,我可以通过查看该图层的输出得到关于第10层的哪些信息或见解?我不确定这是否有帮助..如果没有,请告诉我可以提供的其他信息。 – matchifang

回答

3

前言:卷积网络是施加到(步幅,这是出现在GIF)图像的部分的过滤器的集合。如果图像的给定子部分与过滤器匹配,则会生成真/假标签。

Striding CNN

你看到的在您提供的图片是不是这些可视化在我看来是如何工作的,因为它们形象化CNN如何percieves的整体形象,在每一层,并有最好的表现只是那里使用的一系列简单的过滤器。这意味着它们都看起来非常相似。

下面是网络的基本过滤器如何可能的更好的表示形式。其中一些将以直线触发,另一些将在水平线上触发。这也是你所链接的图像显示的内容,除了它在整个图像上显示在一个视觉上简单的对象上,这使得它更难以理解。 当你得到更复杂的过滤器,这些过滤器建立在这些基本过滤器之上时,可能会更好地显示整个图像。

Simple convolutional filters

还有一个概念叫做迁移学习,在那里你采取的是高度重视现有的广义模型,并尝试将这些应用到您的具体问题。这些模型往往需要进行调整,这可能意味着删除一些不需要的图层(因为我们保留的每个图层意味着训练通常会更费时),和/或添加更多图层。

研究人员将能够更好地解释网络中的每个层如何构建在以前的层上,以及他们如何为解决手头问题做出贡献。这通常是基于直觉,感觉(这可以通过良好的视觉效果被简化,如本deep visualization toolbox video

举个例子,假设我使用VGG16,这是受过训练的image-net一个通用模型的名称。我想改变它来对不同类别的家具进行分类,而不是将其最初打算分类的完全不同的1000个类别分类。因为它是一个通用的模型,它可以识别许多不同的事物,从人类到动物,到汽车,再到家具。但是很多这些东西对我来说没有任何意义,因为它们并不能真正帮助我对家具进行分类。

由于我们对这些类所做的最重要的发现发生在网络中的不同层次上,因此我可以移回卷积层,并删除所有对于我的任务来说似乎过于复杂的事情这样做。这可能意味着我删除了一些似乎专门对人的特征进行分类的图层,例如耳朵,嘴巴,眼睛和脸部。

据我所知,人们可以看到尽可能多的图层,然后通常会根据本能做出判断,然后在哪些图层保留或丢弃。

Visualizing what ConvNets learn

An Intuitive Explanation of Convolutional Neural Networks

+0

谢谢你的回答。我目前想要的是功能图。实际上,我想知道从特征映射的可视化中可以得到什么洞察力 - 你也许也有答案?此外,你认为它会更有用吗?可视化过滤器而不是功能图?道歉,如果这个问题很愚蠢。我对神经网络很陌生。 – matchifang

+0

明天我可能会添加更多信息。但是,您的功能图本质上是您的其中一个筛选器的完成输出。你想象的东西有点取决于你想要了解的东西。如果您想了解这些概念,以及CNN如何工作,我会说可视化过滤器。但对于实际工作,您可以直观地看到从过滤器/图层获得的要素图。我非常推荐看看我收录的视频。它很好地展示了这些地图/滤镜如何与海誓山盟交互。 – NegatioN