プロジェクト画面:編集タブの使い方

Friday, November 03, 2017

App

Posted by Yoshiyuki Kobayashi

編集タブでは、学習に用いるニューラルネットワークのネットワーク構成を編集します。

 

Neural Network Consoleでは、ニューラルネットワークの構成を、あらかじめ用意されたレイヤーと呼ばれる部品(関数)の組み合わせで表現します。

 

1 ネットワークグラフに新しいレイヤーを追加するには

ネットワークグラフに追加するレイヤーを、編集タブ左端のコンポーネントリストからネットワークグラフにドラッグ&ドロップします。

もしくは、コンポーネントリストでネットワークグラフに追加するレイヤーをダブルクリックします。

もしくは、コンポーネントリストで、ネットワークグラフに追加するレイヤーをクリックするかカーソルキーの上下で選択し、キーボードのEnterキーを押します。

もしくは、コンポーネントリストで、ネットワークグラフに追加するレイヤーをクリックするかカーソルキーの上下で選択し、ネットワークグラフ上でダブルクリックします。

 

ご参考

ネットワークグラフでレイヤーが選択されている状態でコンポーネントリストのダブルクリック、もしくはEnterキーでレイヤーを追加すると、新しいレイヤーは選択されていたレイヤーに自動的に接続します。
 

2 レイヤーを1つ選択するには

ネットワークグラフ上のレイヤーをクリックします。

もしくは、ネットワークグラフ上をクリックした後、キーボードのカーソルキーで目的のレイヤーまで移動します。
 

3 レイヤーを複数選択するには

キーボードのCtrlキーを押しながらネットワークグラフ上のレイヤーをクリックします。

もしくは、最初のレイヤーを選択した後、キーボードのCtrlキーを押しながら、カーソルキーでレイヤーを移動します。

もしくは、ネットワークグラフ上のレイヤーやリンクのない箇所からドラッグし、レイヤーを範囲選択します。
 

4 すべてのレイヤーを選択するには

ネットワークグラフ上を右クリックして表示されるポップアップメニューからSelect Allを選択します。

もしくは、キーボードのCtrlキーを押しながらAキーを押します。
 

5 レイヤーの選択を反転するには

ネットワークグラフ上を右クリックして表示されるポップアップメニューからInverse Layer Selectionを選択します。
 

6 レイヤーの選択を解除するには

ネットワークグラフ上の、レイヤーやリンクのない箇所をクリックします。

もしくは、ネットワークグラフ上を右クリックして表示されるポップアップメニューからClear Selectionを選択します。

もしくは、キーボードのEscキーを押します。
 

7 レイヤーの座標を移動するには

  1. 移動対象のレイヤーを選択します。
  2. レイヤーをドラッグして移動します。

 

8 レイヤーを削除するには

  1. 削除対象のレイヤーを選択します。
  2. ネットワークグラフ上を右クリックして表示されるポップアップメニューからDeleteを選択します。
  3. もしくは、キーボードのDeleteキーを押します。

 

ご注意

レイヤーを削除すると、レイヤーに接続されていたリンクも合わせて削除されます。
 

9 既存のレイヤーの位置に新しいレイヤーを挿入するには

  1. コンポーネントリストで、ネットワークグラフに追加するレイヤーをクリックするかカーソルキーの上下で選択します。
  2. ネットワークグラフで、選択したレイヤーの挿入先のレイヤーを選択します。
  3. キーボードのInsertキーを押します。

 

10 リンク構造を保ったままレイヤーを削除するには

  1. 削除対象のレイヤーを選択します。
  2. キーボードのBack spaceキーを押します。

 

11 2つのレイヤーを接続(リンク)するには

ネットワークグラフ上で、接続先レイヤーを、接続元レイヤーのすぐ下までドラッグして移動します。

もしくは、接続元レイヤーの出力ピンから接続先レイヤーの入力ピンまでマウスでドラッグします。

もしくは、接続元レイヤーが選択されている状態で、キーボードのShiftキーを押しながら接続先のレイヤーをクリックします。
 

12 リンクの接続先を変更するには

ネットワークグラフ上で、接続変更対象のリンクをドラッグします。

 

ご参考

出力ピンに近い方をドラッグすると接続元のレイヤーを、入力ピンに近い方の終端をドラッグすると接続先のレイヤーを変更することができます。
 

13 リンクを選択するには

ネットワークグラフ上でリンクをクリックします。
 

14 リンクを削除するには

  1. 削除対象のリンクを選択します。
  2. ネットワークグラフ上を右クリックして表示されるポップアップメニューからDeleteを選択します。
  3. もしくは、キーボードのDeleteキーを押します。

 

15 過去に行った編集を元に戻すには

画面上部の元に戻すボタンをクリックします。

もしくは、ネットワークグラフ上を右クリックして表示されるポップアップメニューからUndoを選択します。

もしくは、キーボードのCtrlキーを押しながらZキーを押します。

 

ご参考

Neural Network Consoleでは過去の編集を100回までさかのぼって元に戻すことができます。
 

16 元に戻した編集を再度行うには

画面上部の再度行うボタンをクリックします。

もしくは、ネットワークグラフ上を右クリックして表示されるポップアップメニューからRedoを選択します。

もしくは、キーボードのCtrlキーを押しながらYキーを押します。

もしくは、キーボードのCtrlキーとShiftキーを押しながらZキーを押します。

 

ご注意

一度でもUndo以外の編集操作を行うと、過去に行った編集を再度行うことはできなくなります。
 

17 レイヤーをクリップボードに切り取りするには

  1. 切り取り対象のレイヤーを選択します。
  2. 画面上部の切り取りボタンをクリックします。もしくは、キーボードのCtrlキーを押しながらXキーを押します。
  3. もしくは、ネットワークグラフ上を右クリックして表示されるポップアップメニューからCutを選択します。

 

18 レイヤーをクリップボードにコピーするには

  1. コピー対象のレイヤーを選択します。
  2. 画面上部のコピーボタンをクリックします。もしくは、キーボードのCtrlキーを押しながらCキーを押します。
  3. もしくは、ネットワークグラフ上を右クリックして表示されるポップアップメニューからCopyを選択します。

 

19 クリップボードのレイヤーを貼り付けするには

画面上部の貼り付けボタンをクリックします。

もしくは、ネットワークグラフ上を右クリックして表示されるポップアップメニューからPasteを選択します。

もしくは、キーボードのCtrlキーを押しながらVキーを押します。
 

20 レイヤーの配置を自動整理するには

ネットワークグラフ上を右クリックして表示されるポップアップメニューからArrange Layers
を選択します。
 

21 ネットワークグラフの表示範囲を移動するには

ネットワークグラフ右および下に表示されるスクロールバーをドラッグします。

もしくは、マウスホイールを操作します(マウスホイールのみの操作で縦スクロール、Shiftキーを押しながらの操作で横スクロール)。
 

22 ネットワークグラフ表示を拡大縮小するには

  1. ネットワークグラフをクリックして選択します。
  2. キーボードのCtrlキーを押しながらマウスホイールを操作します。もしくは、ネットワークグラフ上を右クリックして表示されるポップアップメニューからZoomを選択し、さらにZoom InもしくはZoom Outを選択します。
  3. もしくは、キーボードのCtrlキーを押しながら「+」(プラス)キーもしくは「-」(マイナス)キーを押します。

 

23 ネットワークグラフ表示の拡大率を元に戻すには

  1. ネットワークグラフをクリックして選択します。
  2. キーボードのCtrlキーを押しながら「0」(ゼロ)キーを押します。

もしくは、ネットワークグラフ上を右クリックして表示されるポップアップメニューからZoomを選択し、さらにDefaultを選択します。
 

24 レイヤーのプロパティを編集するには

  1. プロパティ編集対象のレイヤーを1つもしくは複数選択します。
  2. プロパティリストに表示されたプロパティのうち、編集するプロパティの値をクリックします。
  3. もしくは、プロパティリスト上をクリックした後、キーボードのカーソルキーで目的のプロパティまで移動しEnterキーを押します。
  4. 文字列を入力するプロパティの場合、キーボードで値を入力します。選択肢から選択するプロパティの場合、マウスで値を選択するか、キーボードのカーソルキー上下で値を選択します。
  5. 他の編集に作業に移るか、キーボードのEnterキー、ESCキーを押すと編集は終了します。

 

プロパティの値としては、通常の数値や文字列の他、以下の値を指定することができます。

プロパティの値 解説 使用例
*(アスタリスク)+他のプロパティ名 同じレイヤーの他のプロパティの値をコピーして使用します AffineレイヤーのOutShapeプロパティを「*Input」とすることで、出力サイズを入力サイズとする
*(アスタリスク)+Argumentレイヤーの名前 現在のネットワーク内にある、指定した名前のArgumentレイヤーの持つ、Valueプロパティの値をコピーして使用します 名前をConvKernelとしたArgumentレイヤーを用意し、複数のConvolutionレイヤーのKernel Shapeを「*ConvKernel」とすることで、ArgumentレイヤーのValueプロパティを編集して複数のConvolutionのKernelShapeをまとめて指定可能にする
数式、カンマ区切りの数式 四則演算とカッコで構成される四則演算を用いることができます

数式中の変数として、同じレイヤーの他のプロパティや、Argumentレイヤーを用いることができます

用いる変数が配列の場合、[ ]演算子を用いて配列の要素のIndexを指定することができます。

l ConvolutionレイヤーのOutMapsを「Input[0]*2」とすることで、OutMapsが入力Map数の倍になるようにする

ConvolutionレイヤーのPaddingを「KernelShape[0]/2,KernelShape[1]/2」とすることで、PaddingをKernelShapeの半分にする

ご注意

編集結果は、値を入力すると即座に反映されます(Enterキーを押す前に確定されています)。誤って入力した値を元に戻したい場合は、元に戻す機能を利用します。

 

ご注意

編集可能なプロパティは濃い黒字で表示されます。その他のプロパティの値は、レイヤーの接続状況やほかのプロパティの値から自動計算されます。

 

ご注意

不正な値が入力されているか、他のレイヤーとの接続の結果不整合が生じているプロパティには、プロパティリスト右に警告マークが表示されます。また、ネットワークグラフ上で不整合が生じているプロパティを持つレイヤーの右上にも警告マークが表示されます。この場合、レイヤーの接続を見直すか、プロパティの値を修正してください。
 

25 複数のレイヤーのプロパティをまとめて編集するには

複数のレイヤーを選択した状態でプロパティを編集します。
選択中のレイヤーのプロパティのうち、値を入力したプロパティと同名のプロパティがすべて入力した値で上書きされます。
 

26 レイヤーをユニット化するには

  1. ユニット化対象のレイヤーを1つもしくは複数選択します。
  2. ユニット作成ボタンを押します。Create Unitダイアログが開きます。
  3. Network Nameにユニットネットワークのネットワーク名を入力し、Createボタンを押します。

 

27 各レイヤーの必要とするメモリ量や計算量を確認するには

  1. メモリ量や計算量の確認対象のレイヤーを1つ選択します。
  2. プロパティリストで以下の値を参照します。

 

項目 内容
CostParameter レイヤーの持つパラメータの総数
CostAdd レイヤーの計算に必要な加算回数
CostMultiply レイヤーの計算に必要な乗算回数
CostMultiplyAdd レイヤーの計算に必要な乗加算回数
CostDivision レイヤーの計算に必要な除算回数
CostExp レイヤーの計算に必要な指数計算回数
CostIf レイヤーの計算に必要な条件分岐判断回数

 

ご参考

必要なメモリ量や計算量が常にゼロである項目はプロパティリストに表示されません。
 

28 Webでレイヤーの説明を参照するには

  1. 説明を参照するレイヤーを選択します。。
  2. プロパティリスト右上の説明アイコン(本の形のアイコン)をクリックします。
    もしくは、キーボードのCtrlキーを押しながらF1キーを押します。

ブラウザが起動し、選択中のレイヤーについての解説ページが開きます。
 

29 ネットワーク全体の統計情報を確認するには

編集右のネットワーク統計情報を参照します。

 

ネットワーク統計情報には以下の統計情報が表示されます。

項目 内容
Output 計算過程で保持する必要がある途中計算値(バッファ)の数
CostParameter ニューラルネットワーク全体の持つパラメータの総数
CostAdd 1回のニューラルネットワークの計算で必要な加算回数
CostMultiply 1回のニューラルネットワークの計算で必要な乗算回数
CostMultiplyAdd 1回のニューラルネットワークの計算で必要な乗加算回数
CostDivision 1回のニューラルネットワークの計算で必要な除算回数
CostExp 1回のニューラルネットワークの計算で必要な指数計算回数
CostIf 1回のニューラルネットワークの計算で必要な条件分岐判断回数

 

30 ネットワーク全体の統計情報をクリップボードにコピーするには

ネットワーク統計情報を右クリックして表示されるポップアップメニューからCopyを選択します。
 

31 特定の統計情報を詳しく確認するには

ネットワーク統計情報で、詳しく確認したい統計情報をクリックして選択します。

もしくは、ネットワーク統計情報をクリックした後、キーボードのカーソルキー上下で統計情報の種類を選択します。

もしくは、プロパティリストで統計情報のプロパティを選択します。

 

ネットワークグラフ上の各レイヤーの右に、選択した統計情報の各レイヤーに占める割合が表示されます。

 

ご参考

統計情報を何も選択していない場合、レイヤーの右にはデフォルトでOutputの内容が表示されます。
 

32 編集中のネットワークを画像としてファイルに保存するには

  1. ネットワークグラフ上を右クリックして表示されるポップアップメニューからSave Network Bitmapを選択します。
  2. 保存先の画像ファイル名を指定します。

 

33 nntxt、nnp、ONNXファイルを読み込むには

  1. ネットワークグラフ上を右クリックして表示されるポップアップメニューからImport->nntxt, nnp, ONNXを選択します。
  2. 読み込むnntxt, nnp, ONNXファイルを指定します。

 
ご参考
nntxtファイルは、Neural Network Consoleが学習時に生成する、ニューラルネットワークの構造や学習の設定が記述されたファイルです。nntxtファイルのインポート操作により、EDITタブ、CONFIGタブの設定が指定したnntxtファイルより読み込まれます。

nnpファイルは、Neural Network Librariesが扱う、ニューラルネットワークの構造、学習の設定、学習済みパラメータなどが記述されたファイルです。nnpファイルのインポート操作により、EDITタブ、CONFIGタブの設定が指定したnnpファイルより読み込まれます。nnpファイルが学習済みパラメータを含んでいる場合は、Convolution、AffineなどのWeight(W.File)、Bias(b.File)に学習済みパラメータファイルが読み込まれます。

ONNX(Open Neural Network Exchange Format)は、Deep Learningのモデルを異なるソフトウェア間で共有可能にするオープンなファイルフォーマットです。
https://onnx.ai/
ONNXファイルのインポート操作により、Convolution、AffineなどのWeight(W.File)、Bias(b.File)に学習済みパラメータファイルが設定された状態で、EDITタブにネットワーク構造が読み込まれます。
 

34 Caffeのprototxtからネットワークを読み込むには(beta)

  1. ネットワークグラフ上を右クリックして表示されるポップアップメニューからImport->prototxt (Caffe) betaを選択します。
  2. 読み込むprototxtファイルを指定します。

 

ご注意

Neural Network Consoleはprototxtに書かれている情報のうち、Neural Network Consoleと互換性のある情報のみを読み込み、その他の情報は破棄します。Neural Network ConsoleでサポートされていないレイヤーはUnsupportedレイヤーとして読み込まれます。Unsupportedレイヤーはその内容を確認するために設けられたダミーのレイヤーであり、学習を実行する前に削除する必要があります。
 

35 Caffeのprototxtフォーマットでネットワークを出力するには(beta)

  1. ネットワークグラフ上を右クリックして表示されるポップアップメニューからExport->prototxt (Caffe) betaを選択します。
  2. 保存先のprototxtファイルを指定します。

 

ご注意

Neural Network Consoleはネットワーク情報のうち、prototxtと互換性のある情報のみを出力し、その他の情報は破棄します。出力したprototxtを元にCaffeで学習を行うためには、Caffeでの学習に必要な追加の情報を追記する必要があります。
 

36 Neural Network Librariesで利用可能なネットワーク定義のPythonコードを出力するには

ネットワークグラフ上を右クリックして表示されるポップアップメニューからExport->Python Code(NNabla)を選択します。

ネットワーク定義のPythonコードがクリップボードにコピーされます。
 

37 ネットワークをpptx形式で出力するには

ネットワークグラフ上を右クリックして表示されるポップアップメニューからExport->pptx betaを選択します。

出力されたpptxファイルが関連付けられたアプリで開きます。
 

38 学習結果のレポートをhtml形式で出力するには

ネットワークグラフ上を右クリックして表示されるポップアップメニューからExport->html betaを選択します。

出力されたhtmlファイルが関連付けられたアプリで開きます。
 

39 プロジェクトに2つ目以降のネットワーク構造を追加するには

ネットワークグラフ上方の「+」ボタンをクリックします。
 

40 編集対象のネットワーク構造を切り替えるには

ネットワークグラフ上方のタブをクリックして選択します。

 

ご注意

プロジェクト内のすべてのネットワーク構造において同名のレイヤーは一部を除き全て同じプロパティである必要があります。学習、評価の際、同名のレイヤーやパラメータは全てのネットワーク構造の間で共有されます。
 

41 ネットワーク構造の名前を変更するには

  1. ネットワークグラフ上方のタブをクリックして選択します。
  2. クリックしたタブの名前部分を再度クリックします。
  3. ネットワーク構造の名前を入力し、Enterキーを押します。

 

ご注意

通常ネットワーク構造の名前には「Main」を用います。ネットワーク構造の名前として「Main」を指定した場合、設計した学習用のニューラルネットワークを元に評価用のネットワーク構造「MainValidation」、実行時用のネットワーク構造「MainRuntime」がそれぞれ自動生成されます。「Main」以外の名前を指定した場合、学習用(Training)、評価用(Validation)、実行時用(Runtime)のネットワーク構造をそれぞれ個別に設定する必要があります。

 

42 ネットワーク構造をプロジェクトから削除するには

  1. ネットワークグラフ上方のタブをクリックして削除対象のネットワーク構造を選択します。
  2. ネットワーク構造右端の「x」ボタンをクリックします。

 

43 ネットワーク構造を並び替えるには(NNabla)

ネットワークグラフ上方のタブを左右にドラッグして移動します。