您如何可视化神经网络架构?


79

当写论文/做一个关于神经网络的话题的演讲时,通常会形象化网络体系结构。

有什么好的/简单的方法可以自动可视化常见的体系结构?




1
我用深度学习可视化方法(手动和自动)的调查写了卷积神经网络的简单图。我从这个线程中获得了很多启发和链接-thx!
Piotr Migdal

Answers:


25

Tensorflow,Keras,MXNet,PyTorch

如果将神经网络作为Tensorflow图给出,则可以使用TensorBoard可视化该图

MNIST CNN如下所示:

在此处输入图片说明

您可以自己添加名称/范围(例如“ dropout”,“ softmax”,“ fc1”,“ conv1”,“ conv2”)。

解释

以下仅关于左图。我忽略了右半部分的4个小图。

每个框都是一个带有可学习参数的层。为了进行推断,信息从下往上流动。椭圆是不包含学习参数的图层。

盒子的颜色没有意义。

我不确定虚线框的值(“渐变”,“亚当”,“保存”)。


很好,我正在尝试避免使用诸如conv1,conv2等名称,我想稍后将所有conv的名称都设为CONV,我该怎么办?
Sudip Das

+1。不过,这不仅适用于TF:MXNetPytorch也有一些支持
Jakub Bartczuk

@SudipDas您可以在代码中为图层添加名称,这些名称将在您绘制时显示。

我如何将每一层的名称显示为“ CONV”,如果将其写为每一层的“ CONV”,则会出现错误,导致每一层都应具有唯一的名称作为tf规则,但我想知道的是还有其他方法可以克服这个问题吗?@Ben
Sudip Das

1
@onof我已修复链接
Martin Thoma



11

我将使用keras-sequential-ascii添加ASCII可视化(免责声明:我是作者)。

CIFAR-10的一个小型网络(来自本教程)是:

       OPERATION           DATA DIMENSIONS   WEIGHTS(N)   WEIGHTS(%)

           Input   #####     32   32    3
          Conv2D    \|/  -------------------       896     2.1%
            relu   #####     30   30   32
    MaxPooling2D   Y max -------------------         0     0.0%
                   #####     15   15   32
          Conv2D    \|/  -------------------     18496    43.6%
            relu   #####     13   13   64
    MaxPooling2D   Y max -------------------         0     0.0%
                   #####      6    6   64
         Flatten   ||||| -------------------         0     0.0%
                   #####        2304
           Dense   XXXXX -------------------     23050    54.3%
         softmax   #####          10

对于VGG16,它将是:

       OPERATION           DATA DIMENSIONS   WEIGHTS(N)   WEIGHTS(%)

          Input   #####      3  224  224
     InputLayer     |   -------------------         0     0.0%
                  #####      3  224  224
  Convolution2D    \|/  -------------------      1792     0.0%
           relu   #####     64  224  224
  Convolution2D    \|/  -------------------     36928     0.0%
           relu   #####     64  224  224
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####     64  112  112
  Convolution2D    \|/  -------------------     73856     0.1%
           relu   #####    128  112  112
  Convolution2D    \|/  -------------------    147584     0.1%
           relu   #####    128  112  112
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####    128   56   56
  Convolution2D    \|/  -------------------    295168     0.2%
           relu   #####    256   56   56
  Convolution2D    \|/  -------------------    590080     0.4%
           relu   #####    256   56   56
  Convolution2D    \|/  -------------------    590080     0.4%
           relu   #####    256   56   56
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####    256   28   28
  Convolution2D    \|/  -------------------   1180160     0.9%
           relu   #####    512   28   28
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   28   28
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   28   28
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####    512   14   14
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   14   14
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   14   14
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   14   14
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####    512    7    7
        Flatten   ||||| -------------------         0     0.0%
                  #####       25088
          Dense   XXXXX ------------------- 102764544    74.3%
           relu   #####        4096
          Dense   XXXXX -------------------  16781312    12.1%
           relu   #####        4096
          Dense   XXXXX -------------------   4097000     3.0%
        softmax   #####        1000

11

有一个名为Netron的开源项目

Netron是神经网络,深度学习和机器学习模型的查看者。

Netron支持ONNX(.onnx,.pb),Keras(.h5,.keras),CoreML(.mlmodel)和TensorFlow Lite(.tflite)。Netron对Caffe(.caffemodel),Caffe2(predict_net.pb),MXNet(-symbol.json),TensorFlow.js(model.json,.pb)和TensorFlow(.pb,.meta)提供实验性支持。

在此处输入图片说明



8

凯拉斯

所述keras.utils.vis_utils模块提供效用函数,以绘制Keras模型(使用graphviz的)

下面显示了一个网络模型,其中第一个隐藏层具有50个神经元,并期望有104个输入变量。

plot_model(model, to_file='model.png', show_shapes=True, show_layer_names=True)

在此处输入图片说明


我可以以LaTex兼容格式使用它吗?
pushpen.paul

8

Python软件包conx可以可视化激活的网络,并具有net.picture()生成SVG,PNG或PIL图像的功能,如下所示:

在此处输入图片说明

Conx是在Keras上构建的,可以在Keras的模型中读取。每个库的颜色图都可以更改,并且可以显示所有库类型。

可以在以下位置找到更多信息:http : //conx.readthedocs.io/en/latest/


6

我一直在研究拖放式神经网络可视化工具(以及更多)。这是一个类似于LeNet的架构的可视化示例。类似于LeNet的架构的可视化 具有扇出和扇入的模型也很容易建模。您可以访问该网站,网址https://math.mit.edu/ennui/


按下Train时,我的浏览器不断崩溃
daddinhquoc

1
感谢检查出来。是的,此错误最近才弹出​​,似乎是由于最近在Chrome上对WebGL进行了一些更改而导致的。一切都可以在Firefox上运行。我会在知道更多时通知您。
杰西

tks,您的
展示台

1
谢谢!让我知道您是否有任何问题或想法。我们也有有趣的事情,例如代码生成!
杰西

5

在R中,nnet不带有plot函数,但是此处提供了相应的代码。

另外,您可以使用neuralnet具有plot.neuralnet功能的,称为IMHO的较新的更好的程序包,因此您可以执行以下操作:

data(infert, package="datasets")
plot(neuralnet(case~parity+induced+spontaneous, infert))

神经网络

neuralnet并未使用太多,nnet因为它nnet已经很老了,并且随r-cran一起提供。但是neuralnet具有更多的训练算法,包括弹性反向传播,即使在Tensorflow之类的程序包中也没有,并且对超参数选择更健壮,并且总体上具有更多功能。


你应该添加更新的链接NNET的代码中的R beckmw.wordpress.com/2013/11/14/...
wacax

4

在神经网络可视化方面有一些新颖的替代方法。

请参阅以下文章:

令人惊叹的``人工智能大脑扫描''揭示了机器学习新技能时会看到什么

在AI“大脑”内部-机器学习是什么样的?

这些方法更倾向于可视化神经网络操作,但是,在生成的图中,NN体系结构也有些可见。

例子:

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明


21
请解释一下我们在这里看到的内容。它看起来很漂亮,但是我不明白这些精美的图像如何支持理解网络的运行。
马丁·托马

我不喜欢您贬义的“精美图片”一词。@Martin
VividD

9
我不是故意要攻击您的,但是您在没有实际回答我的问题的情况下过于防御的回答是不言而喻的。-我在“乐高玩具箱”图中添加了“解释”部分。
Martin Thoma

1
顺便说一句:第二个链接已死。
Martin Thoma

4
@MartinThoma显然,这是数据艺术,而不是数据可视化(请参见lisacharlotterost.github.io/2015/12/19/…)。
Piotr Migdal


3

您可以阅读流行的论文《通过深度可视化了解神经网络》,其中讨论了卷积网络的可视化。它的实现不仅显示每一层,而且还描​​述了激活,权重,解卷积以及本文中深入讨论的许多其他事情。它的代码在中caffe'。有趣的是,您可以用自己的模型替换预先训练的模型。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.