私は、ニューラルネットワークを訓練するために.NETフレームワークを使用してきました。私のデータセットは非常に多く、多数の入力があります。メモリ内のすべてのトレーニングセットをロードせずにEncogニューラルネットワークをトレーニングする方法はありますか?
私が使用していた古いフレームワークに問題があり、Encogがより豊かになり、追加の機能を提供するため、Encogに切り替えることにしました。
私の問題は、一度にすべてのトレーニングデータを2D配列に読み込むことです。非常に大きなデータセットがあるので、これは私には合いません。私はこれを回避しようとしましたが、他の質問もチェックしました(例えば、this one)が良い答えを見つけることができませんでした。
SQLNeuralDataSetとストリーミング操作をサポートする他の実装を試してみましたが、最終的に(MemoryDataLoaderを使用して)データをメモリにロードするように見えますが、これで問題は解決しません。
一度に1つのアイテムをネットワークにロード(およびトレーニング)する方法はありますか?または、このオプションはEncogでは利用できませんか?
おかげ
EDIT
私は私のニーズに合わせて、ソースコードをコピーして修正することになりました。基本的に、それはすべての文書によるとされ、GradientWorker
にProcess(IMLDataPair pair)
にダウンしています:
プロセス1つのトレーニングセット要素。
私は 'BufferedMLDataSet.cs'を試みたが、それは本当に私の問題を解決しませんでした。基本的に私は入力と出力を持つCSVファイルを構築するために私のデータセットをループしなければなりませんでした。そして、 'EncogUtility.ConvertCSV2Binary'を使ってバイナリにCSVファイルを変換し、それをtrainingSetにロードします:' var trainingSet = new BufferedMLDataSet(binaryFile) 'を呼び出し、trainingSetをBackPropagationオブジェクトに渡します。私がトレーニングを1つずつロードすることができれば、はるかに良いでしょう。 – kristoffz