a GUI editor for neural network (especially for chainer)
chainer 向けの GUI エディタです。
- python 3.5.2 以降 (おそらく 3.5 以降なら動きます)
- chainer 2.0.2 以降 (おそらく 1.19 以降なら動きます)
git clone https://github.com/al4tech/nnboard.git
cd nnboard
python server.py
server.py を実行すると、自動的に index.html が開きます。このページ上で、ニューラルネットワークをさくさく設計することができます。
初めての方は、まず一番上の Load Canvas ボタンから、サンプルファイル(このディレクトリにある .json ファイルは全てサンプルファイルです)を適当にひとつ読み込んでみて、 青字の Start Learning ボタンを押してみてください。学習が始まります。別のサンプルを試すときは、先に青字の Quit Learning ボタンを押して、学習を停止してから、 Load Canvas ボタンで別のサンプルファイルを読み込み、それから Start Learning ボタンを押してください。
server.py を Ctrl-C で終了してください。
なお、 index.html の最下部にある Shutdown Server ボタンを押しても、 server.py が終了します。
-
index.htmlの一番上にあるDownload Canvasリンクを押すと、json ファイルがローカルに保存されます。この中に、構築したネットワークの情報が入っています。 -
Load Canvasボタンを押して json ファイルを選択すると、構築したネットワークが復元されます。 -
構築したネットワークとともに、optimizerの設定なども保存されます。
-
学習結果は保存されません・・・
-
層や結合を編集するときは、canvas にフォーカスが当たった状態にします(canvas内をどこかクリックすれば良いです)。
-
aキーを押すと、層が作られます(add)。作った層は、クリックで選択でき、ドラッグで移動できます。 -
ある層(a)を選択中に、
Shiftキーを押しながら別の層(b)をクリックすると、(a)から(b)に結合が生じます。結合もクリックで選択できます。 -
Delキーを押すと、選択中の層や結合を削除できます。層を削除すると、層にくっついている結合も一緒に削除されます。 -
ある単一の層を選択中に、様々な英字キーを押すことで、層のタイプを変更することができます。(層タイプ一覧)
-
対応キー:
b(batch Normalization),c(convolution),C(Concat),e(experience replay),f(full connected),i(input),m(mean_squared_loss),o(other;任意の関数),p(pooling),r(random),R(Reshape),s(softmax_cross_entropy),T(Transpose),+(足し算),*(掛け算),-(マイナス) -
Optionsから、オプション引数を設定できます。oの場合は、任意の関数を設定できます。(lambda式も指定可です。例えば"func":"lambda x,y:F.softmax_cross_entropy(x,y)"と書けば、タイプsの層と実質的に同じになります。) -
Optionsは json の書式で書く必要があります。 None は null で指定します。タプルを指定したいときは、(jsの)Array として書きます。例:"shape":[-1,1,28,28]
-
-
ある単一の層を選択中に、
Ctrlキーを押しながら様々な英字キーを押すことで、層の活性化関数を変更することができます。-
対応キー:
e(elu),i(id),l(leaky_relu),r(relu),s(sigmoid),t(tanh) -
Optionsから、(これらに限らない)任意の活性化関数に変更できます(lambda式も指定可:例えば"act":"lambda x:F.relu(x)"など)。
-
-
loss と optimizer を設定する必要があります。
-
単一の層を選択中に数字キー(
0-9)を押すと、層に「タグ」をつけることができます(層の中に#0などと表示されます)。 -
一行目には
optimizee: #0, loss:#4と書いてあります。これに従って、最適化したい loss の層に#4タグを指定します。その loss から計算される勾配に従って最適化したい重みをもつ層に#0タグを指定します。 -
同時に4つまで複数のoptimizerを併用できます。
-
複数のoptimizerを交互に動かしたい場合などには、
conditionの指定を行ってください。ここでは「非負整数 x を受け取り、(xイテレーション目にこのoptimizerを動かすか)を返す関数」を指定してください。- 例:optimizer 0 の condtition が
lambda x: x%6で、optimizer 1 の condition がlambda x: not(x%6)の時、「0を5回」→「1を1回」→「0を5回」→・・・という動かし方になります。
- 例:optimizer 0 の condtition が
-
-
Start Learningボタンを押すと、学習が始まります。 -
正常に学習が始まると、ボタンの表示が
Quit Learningに変化します。Quit Learningボタンを押すと、学習が終了し、ボタンの表示がStart Learningに戻ります。何らかのエラーが生じて学習が死んだ場合も、ボタンの表示がStart Learningに戻ります。 -
学習中の表示の見方
-
各層の右下に表示されているのは shape です。右上は、現在の層の値のプレビューです。
-
各層をダブルクリックすると、現在の層の値をいつでも可視化することができます
-
いい感じに可視化されない場合は、任意の層を使って、いい感じに shape を整形すると良いです。
-
学習中の loss の変化が折れ線グラフで表示されます(google chart API を利用しているため、インターネット接続時のみの機能です)。
-
このグラフは15秒ごとに自動更新されます。手動で更新したい場合は
Update graph manuallyボタンを押してください。 -
softmax_cross_entropy の層で loss を集計している場合に限り、 accuracy の変化も折れ線グラフで表示されます。
-
-
-
学習中に任意コードの実行ができます。学習係数を途中で変えたりできます。
Execute Codeにコードを入力し、Executeボタンを押してください。- エラーが出た場合はダイアログで表示されます。
-
学習中にハイパーパラメータをスライダーで調節できます。
Tuning Sliderの欄に調節したいハイパーパラメータの変数を入力し、GetValueボタンを押すと、スライダーに現在の値がセットされ、スライダーが操作可能となります。この状態でスライダーを操作すると、動的にハイパーパラメータの値を変更できます。
-
index.html:編集画面(GUI) -
server.py:chainerでニューラルネットの計算を行うサーバー
-
server.py起動時にAddress already in useなどと表示されて起動できない。-
以下を確かめてみてください:
-
server.pyがバックグラウンドで起動したままになっている。 →index.htmlを(手動で)開いて、Shutdown Serverボタンを押せば終了できます。 -
それ以外の何らかのプログラムが
localhost:8000を使用している。 → 通信に使用するポート番号を変更しましょう。例えば、ポート 12345 番を使いたい場合は、サーバをserver.py -p 12345で起動し、index.htmlの最下部にあるAddress of Serverをhttp://localhost:12345と変更してください。
-
-
テストエラー見たい
* 現状、そのような機能はありませんが、見られるようにしたいと思っています。
-
学習結果を保存したい
- 現状、そのような機能はありません
-
GPU で動かしたい
- 現状、未対応です
-
学習中にネットワークいじったらどうなるの
- 現状、どうにもなりません。 ← 部分的に、ネットワークを学習中に動的にいじれるようにしました。ネットワークを変更してから、
SendNetworkInfoToServerボタンを押すと、変更したことをサーバーの計算に反映できます。(link 層はいじれません)
- 現状、どうにもなりません。 ← 部分的に、ネットワークを学習中に動的にいじれるようにしました。ネットワークを変更してから、
-
Start Learningボタンを押してもQuit Learningに変化しない- おそらく一瞬で学習が落ちてます。
- MIT
- see LICENSE
