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

数据挖掘 机器学习 神经网络 深度学习 可视化
2021-09-19 19:31:49

在撰写有关神经网络的主题的论文/进行演示时,通常会可视化网络架构。

自动可视化常见架构的好/简单方法是什么?

4个回答

我最近创建了一个用于绘制 NN 架构和导出 SVG 的工具,称为NN-SVG

在此处输入图像描述

TensorFlow、Keras、MXNet、PyTorch

如果神经网络以 Tensorflow 图的形式给出,那么您可以使用 TensorBoard 可视化该图

这是 MNIST CNN 的样子:

在此处输入图像描述

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

解释

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

每个框都是一个具有可以学习参数的层。对于推理,信息从底部流向顶部。椭圆是不包含学习参数的层。

盒子的颜色没有意义。

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

有一个开源项目叫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) 提供实验性支持。

在此处输入图像描述

我会使用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