MXNet How To : ニューラルネットワークを計算グラフとしてどのように可視化するか

MXNet How To : ニューラルネットワークを計算グラフとしてどのように可視化するか (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
日時 : 02/16/2017

* 本ページは、MXNet 本家サイトの “How to visualize Neural Networks as computation graph” を翻訳した上で適宜、補足説明したものです:
   http://mxnet.io/how_to/visualize_graph.html

How to visualize Neural Networks as computation graph – ニューラルネットワークを Jupyter notebook 上で可視化するためのコマンドと命令を提供します。

* サンプルコードの動作確認はしておりますが、適宜、追加改変しています。
* このページのグラフ画像は自作しています。

 

このトピックは、MXNet 上で構築されたニューラルネットワークを可視化するために MXNet で $mx.viz.plot_network$ をどのように使用するかをデモします。mx.viz.plot_network はニューラルネットワークをノードの計算グラフとして表す手助けをします; 入力ノードでは計算が開始し、出力ノードでは、結果を読むことがでけいます。

 

前提条件

ネットワークを可視化するためには Jupyter Notebook と Graphviz ライブラリが必要です。

 

サンプルのニューラルネットワークを可視化する

mx.viz.plot_network は、ネットワーク定義と一緒の Symbol と、グラフのノードの shape のためのパラメータである、オプションの node_attrs を入力として取り計算グラフを生成します。

線形行列分解 (linear matrix factorization) のためのサンプルのニューラルネットワークを可視化してみます :

  • Jupyter notebook サーバを開始します。
$ jupyter notebook
  • ブラウザで Jupyter Notebook にアクセスします – http://localhost:8888/。
  • 新しいノートを作成します – “File -> New Notebook -> Python 2”
  • サンプル・ネットワークを可視化するために下のコードをコピーして実行します。
import mxnet as mx
user = mx.symbol.Variable('user')
item = mx.symbol.Variable('item')
score = mx.symbol.Variable('score')

# Set dummy dimensions
k = 64
max_user = 100
max_item = 50

# user feature lookup
user = mx.symbol.Embedding(data = user, input_dim = max_user, output_dim = k)

# item feature lookup
item = mx.symbol.Embedding(data = item, input_dim = max_item, output_dim = k)

# predict by the inner product, which is elementwise product and then sum
net = user * item
net = mx.symbol.sum_axis(data = net, axis = 1)
net = mx.symbol.Flatten(data = net)

# loss layer
net = mx.symbol.LinearRegressionOutput(data = net, label = score)

# Visualize your network
mx.viz.plot_network(net)

以下のような計算グラフを見ることができるはずです :

 

以上