FAQ:学習実行時

Friday, November 03, 2017

Uncategorized

Posted by Yoshiyuki Kobayashi

「Creating cache data…」に非常に長い時間がかかります

高速に学習を行うために、CSV形式で入力したデータセットを元にキャッシュデータを作成中です。学習データの数が多い場合、ディスクアクセス速度が遅い場合にはキャッシュデータ作成に多くの時間がかかることがあります。
データセットの置き場所としてネットワークドライブ、アーカイブ用HDDなど低速なストレージを利用している場合は、NVMe SSD等の導入をご検討ください。
キャッシュデータは、CSVファイルのファイル名+”.cache”の名前のフォルダに作成されます。
キャッシュデータのフォルダを開くとキャッシュの作成状況を確認することができます(100データ毎に1つファイルが作成されます)。
ConfigタブのEnable Dataset Cacheをチェックすることで、既に作成されたキャッシュデータが利用されるようになり、次回以降のキャッシュデータ再生成をスキップすることができます。CSVファイルを更新した場合はEnable Dataset Cacheのチェックを外して学習を実行し、キャッシュデータを再生成させる必要があります。

Lossや評価データ上でのErrorが単調減少しません

データ数が十分でない、ネットワーク構成が適切でないなどの可能性があります。FAQ「評価値にNaNが表示されるなど、正しく学習が進みません」についても合わせてご参照ください。
その他の原因として、学習データセットにおいて類似したデータが連続して与えられている(シャッフルされていない)可能性があります。Neural Network Consoleでは、与えられた学習データセットの先頭から順にデータを読みながら、コンフィグタブのBatch Sizeで与えた数のデータを1つの単位としたミニバッチ勾配降下法によるパラメータの最適化を行います。この際、効率的な最適化のためには1つのMini-batchに含まれるデータはできるだけバリエーション豊かであることが理想的です。データセットCSVファイルの各行をあらかじめシャッフルしておく、もしくはコンフォグタブのShuffleにチェックを入れ、実行時にデータセットをランダムにシャッフルすることで状況が改善する可能性があります。

評価値にNaNが表示されるなど、正しく学習が進みません

入力データの値を概ね-1.0~1.0の間に収まるようにする必要があります。この範囲を大きく逸脱するデータが存在すると、ニューラルネットワークの演算過程でNaNが発生する可能性があります(画像入力の場合、デフォルト設定では輝度値が0.0≦x<1.0の間に正規化されます)。
Affine、ConvolutionのWeightの初期化関数(Initializer)が正しく設定されていない可能性があります。
Lossレイヤーとその直前のActivationレイヤーの組み合わせが適切でない可能性があります。連続値の回帰を行う場合はActivationレイヤーなしのSquaredErrorレイヤーを、0か1の2値判別を行う場合はSimoid + BinaryCrossEntropyレイヤーを、カテゴリ分類問題を解く場合はSoftmax + CategoricalCrossEntropyレイヤーをそれぞれ指定します。
Tanh等入力値が一定の範囲を逸脱すると(Infを経て)NaNが生じるレイヤーを、ReLUのようなNaNが発生し得ないレイヤーに置き換えることで現象を回避できる可能性があります。

ログ出力に「MemoryError」、「Out of memory」もしくは「Calling garbage collection 0」と表示されます

メモリ不足が発生しています。GPUを利用している場合、よりメモリ容量の大きいGPUの導入をご検討ください(最先端の画像認識課題を追試するためには12GB以上、少なくとも8GBのGPUメモリが必要です)。
GPUを変更することなくメモリ不足を解消するには、入力データのサイズを小さくする(例えば画像であれば、ダウンサンプリングして解像度を落とす)、コンフィグタブでBatch Sizeを小さく設定する(デフォルトの100に対し、50、20、…、最小の1など)、ネットワーク構成を編集して必要なメモリ量(編集タブ右のネットワーク統計情報が示すOutputやCostParameter)が少ないネットワークにするといった方法があります。

学習済みパラメータをロードした後、ネットワークを編集し学習を開始するとエラーになります

編集後のレイヤーのパラメータサイズと、学習済みパラメータのサイズが一致していない可能性があります。読み込んだ学習済みパラメータのサイズ(Affineの場合W.Fileプロパティに指定しされているtxtファイルの示すパラメータのサイズ)と、レイヤーのパラメータサイズ(Affineの場合入力サイズ×出力サイズ)が一致していることをご確認ください。一致していない場合学習済みパラメータは利用できませんので、学習済みパラメータを指定するプロパティを空白にします。

ログ出力にエラーが表示されますが、エラーの意味がよく分かりません

エラーがデータセットに起因する場合、データセットタブ、右クリックメニューのCheck Consistencyを選択することでエラーを特定できる可能性があります。詳しくはデータセットの整合性を確認するにはをご参照ください。