画像内のいくつかのものを分類するためにニューラル ネットワークをトレーニングしています。私は 40x40 ピクセルの画像をトリミングし、それをオブジェクトかどうかに分類します。したがって、1600 個の入力ニューロン、3 つの隠れ層 (500、200、30)、および 1 または 0 を示さなければならない 1 つの出力ニューロンがあります。私はFloodライブラリを使用します。
QuasiNewtonMethod
アルゴリズムで大きな行列を使用し、メモリに収まらないため、 でトレーニングできません。だから私はGradientDescent
とObjectiveFunctional
isを使いますNormalizedSquaredError
。
問題は、トレーニングによって重みがオーバーフローし、ニューラル ネットワークの出力がすべての入力に対してINF
orになることです。NaN
また、データセットが大きすぎて (CSV の場合は約 800 MB)、完全に読み込むことができません。そのため、1000 個のインスタンスを多数作成し、それを XML ( FloodInputTargetDataSets
のデフォルト形式) として保存し、ランダムにシャッフルされた各データセットで 1 エポックのトレーニングを行いました。しかし、1 つの大きなデータセット (10000 インスタンス) だけでトレーニングすると、オーバーフローします。
なぜこれが起こっているのですか、どうすればそれを防ぐことができますか?