ニューラルネットワークアーキテクチャをどのように視覚化しますか?


79

論文を書いたり、ニューラルネットワークに関するトピックについてプレゼンテーションを行う場合、通常はネットワークアーキテクチャを視覚化します。

一般的なアーキテクチャを自動的に視覚化する良い/簡単な方法は何ですか?




1
私が書いた複雑な神経回路網の簡単な図を(手動と自動の両方)の深い学習の可視化手法の調査で。このスレッドから多くのインスピレーションとリンクを得ました-thx!
ピョートルミグ

回答:


25

Tensorflow、Keras、MXNet、PyTorch

ニューラルネットワークがTensorflowグラフとして与えられている場合、このグラフをTensorBoardで視覚化できます。

MNIST CNNは次のようになります。

ここに画像の説明を入力してください

名前/スコープ(「ドロップアウト」、「softmax」、「fc1」、「conv1」、「conv2」など)を自分で追加できます。

解釈

以下は左側のグラフについてのみです。右半分の4つの小さなグラフは無視します。

各ボックスは、学習可能なパラメーターを持つレイヤーです。推論のために、情報は下から上に流れます。楕円は、学習したパラメーターを含まないレイヤーです。

ボックスの色には意味がありません。

破線の小さなボックス( "gradients"、 "Adam"、 "save")の値がわかりません。


それは良いです、私はconv1、conv2などのような名前を避けようとしています、私はCONVとして後でconvの名前をすべて作りたいです、どうすればいいですか?
スディップダス

+1。ただし、TFだけではありません。MXNetPytorchにもいくつかのサポートがあります
Jakub Bartczuk

@SudipDasコード内の名前をレイヤーに追加すると、プロットするときに表示されます。
ベン

各レイヤーの名前を「CONV」と表示する方法、各レイヤーの「CONV」と入力するとエラーが発生します。各レイヤーにはtfルールとして一意の名前が必要ですが、知りたいのはこの問題を克服する他の方法はありますか?? @ベン
スディップダス

1
@onofリンクを修正しました
マーティン・トーマ

23

私は最近、NN-SVGと呼ばれるNNアーキテクチャを描画し、SVGをエクスポートするツールを作成しました

ここに画像の説明を入力してください


1
SVGのダウンロードが機能しない
画像

私のために働いています1/23/19。それでも問題が解決しない場合は、お気軽に問題を開いてください。
アレックスレネール

1
これが唯一の正しい答えです
人工知能

素晴らしいツール。しかし、AlexNetスタイルでは、Tensorの寸法が誤って表されていることに気づきました(幅と高さの寸法)
FlySoFast


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パッケージconxnet.picture()、次のようなSVG、PNG、またはPILイメージを生成する機能を使用して、アクティベーションでネットワークを視覚化できます。

ここに画像の説明を入力してください

ConxはKeras上に構築されており、Kerasのモデルを読み取ることができます。各バンクのカラーマップは変更でき、すべてのバンクタイプを表示できます。

詳細については、http//conx.readthedocs.io/en/latest/をご覧ください。


6

私は、ドラッグアンドドロップのニューラルネットワークビジュアライザー(およびその他)に取り組んでいます。LeNetのようなアーキテクチャの視覚化の例を次に示します。LeNetのようなアーキテクチャの視覚化 ファンアウトとファンインを備えたモデルも非常に簡単にモデル化できます。https://math.mit.edu/ennui/のWebサイトにアクセスできます。


Trainを押すとブラウザーがクラッシュし続ける
datdinhquoc

1
ご覧いただきありがとうございます。はい、このバグは最近発生したばかりで、ChromeでのWebGLの最近の変更の結果のようです。すべてがFirefoxで動作するはずです。詳細がわかったら更新します。
ジェシー

tks、あなたのビジュアライザーは素晴らしいです、tfプレイグラウンドよりも大きく見えます:)
datdinhquoc

1
ありがとうございました!問題やアイデアがあれば教えてください。コード生成のような楽しいこともあります!
ジェシー

5

Rではnnet、プロット関数は付属していませんが、そのためのコードはここで提供されています

別の方法としてneuralnetplot.neuralnet機能を備えた、より最近のIMHOより優れたパッケージを使用することもできます。

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

ニューラルネット

neuralnetはずっと古く、r-cranに同梱されているnnetため、あまり使用されていませんnnet。しかしneuralnet、Tensorflowのようなパッケージにも欠けている回復力のある逆伝播を含む、より多くのトレーニングアルゴリズムがあり、ハイパーパラメーターの選択に対してはるかに堅牢であり、全体的に多くの機能を備えています。



4

ニューラルネットワークの視覚化には、いくつかの新しい代替の取り組みがあります。

これらの記事をご覧ください:

見事な「AI脳スキャン」により、マシンが新しいスキルを学習するときに見るものが明らかになります

AIの「脳」の内部-機械学習はどのようなものですか?

これらのアプローチは、ニューラルネットワークの動作を視覚化することに重点を置いていますが、NNアーキテクチャも結果の図で多少見えます。

例:

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください


21
ここで見ているものを説明してください。見た目は美しいですが、ネットワークの動作を理解するのに派手な画像がどのように役立つかはわかりません。
マーティントーマ

「派手な画像」という言葉を軽rog的に使用するのは好きではありません。@Martin
VividD

9
私はあなたを攻撃するつもりはありませんでしたが、私の質問に実際に答えずにあなたが過度に防御的な答えをしたことは、それ自体を物語っています。-「解釈」部分を「レゴボックス」図に追加しました。
マーティントーマ

1
ところで:2番目のリンクは無効です。
マーティントーマ

4
@MartinThomaこれは明らかにデータアートであり、データvizではありません(lisacharlotterost.github.io/2015/12/19/…を参照)。
ピョートルミグ

3

論文自体は気の利いたものではありませんが、ニューラルネットワークの知識があまりない人にトポロジがどのように見えるかを示すのに非常に役立ちます。このJavascriptライブラリ(Neataptic)を使用すると、ネットワークを視覚化できます。

ここに画像の説明を入力してください


3

畳み込みネットの視覚化について説明している人気の高い論文、Deep Visualization Through Neural Networksを読むことができます。その実装は、各レイヤーを表示するだけでなく、活性化、重み、デコンボリューション、およびこのペーパーで詳しく説明されている他の多くのことも示します。コードはにありcaffe'ます。興味深い部分は、事前に訓練されたモデルを自分のものに置き換えることができることです。


2

Tensorspace-JSは、ネットワークアーキテクチャの3D視覚化のための素晴らしいツールです。

ここに画像の説明を入力してください

https://tensorspace.org/

そして、ここにプログラムの書き方に関する素晴らしい投稿があります:

https://medium.freecodecamp.org/tensorspace-js-a-way-to-3d-visualize-neural-networks-in-browsers-2c0afd7648a8


このツールへのリンクを提供していただけますか?
ピョートルミグダル

1
@PiotrMigdal答えを更新しました。
アリミルザエイ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.