2017-06-27 14 views
1

私の訓練セットは本当にかなり大きいです。全体が約120GBのRAMを占めるので、データを格納するnumpy.zeros()配列を生成することさえできません。ケラスで訓練するためのデータを生成する

データセット全体がすでに配列にロードされている場合でも、ジェネレータを使用するとうまくいきますが、ネットワークに徐々にフィードされてから削除されます。

ジェネレータが配列を作成し、データを挿入し、ネットワークにデータをロードし、データを削除することは問題ありませんか?それとも、プロセス全体が長くかかりすぎて、何か他のことをしているはずですか?

おかげ

答えて

2

あなたは、あなたのバッチニーズと同じように多くをロードすることができ、一度に全データをロードする必要はありません。このanswerをチェックしてください。

+0

こんにちはフィービー、私は最近、正確にそれをしようとしてきましたが、私の結果は大変悪くなりました。同じタイプの結果を得たい場合は、トレーニングに時間がかかるようです。これは期待されていますか? – tryingtolearn

+0

これは、バッチがデータ(ノイズの多いグラデーション)を正しく表していない場合に発生します。バッチサイズよりも多くのデータをロードし、階層化してから訓練したり、類似の結果が得られるまでbatch_sizeで再生することができます。 [詳細情報](https://www.quora.com/Intuitively-how-does-batch-size-impact-a-convolutional-network-training) –

+0

私は参照してください。私は1024のbatch_size、epochs = 4、steps_per_epoch = 500を使用しています。これはかなり合理的な見積もりでした。これはキャラクターベースのモデルで、トレーニングデータは1500万文字です。 私が理解しているように、各エポックは500バッチをとり、各バッチは1024データポイントを持ち、これらのデータポイントのそれぞれは100文字の長さになります。私が理解しているように、これは何か良いものが得られるまで、ハイパーパラメータチューニングです。何を使うべきかについてのヒューリスティックはありますか? 私は数多くの対策を試してみましょう。ありがとう! – tryingtolearn

関連する問題