で「samples_per_epoch」と「steps_per_epoch」の違いは何...私は数日間、この問題で混乱していたfit_generator
私の質問は、トレーニング時間はそれとの間の、このような大規模な違いがあり、なぜ私はBATCH_SIZEを設定することです私のジェネレータには "1"と "20"を指定します。
私はするBATCH_SIZEを設定した場合は、トレーニング時間 のエポックは約180〜200秒です。 は私がBATCH_SIZEが、トレーニング時間1エポックのになるように設定した場合、およそ3000〜3200秒です。
しかし、これらのトレーニング時間のこの恐ろしい違いは、逆の結果になるはずです... batch_size = 1、トレーニング時間 - > 3000〜3200秒です。 batch_size = 20、トレーニング時間 - > 180〜200秒。
私のジェネレータへの入力は、ファイルパスではなく、 "np.load()"を呼び出して メモリに既にロードされているnumpy配列です。 I/Oトレードオフの問題は存在しないと思います。
私はKeras-2.0.3を使用していて、私のバックエンドは、私がこれの更新がPR、 を合併見てきました
tensorflow-GPU 1.0.1ですが、それは、この変更はでは何も影響しないだろうと思われますすべて。 (使用方法は元のものとまったく同じです)
ここでlinkは私の自己定義ジェネレータと私のfit_generatorの要点です。
誰かがこの問題を説明するのに手伝ってもらえますか? ありがとうございました:)
お返事ありがとうございます!私は私のオリジナルはそれと同じだと思う(steps_per_epochsは#samples/batch_sizeの合計に等しくなければならない)。 しかし、結合されたプル要求は私を多く混乱させました... OK、私はそれをついに得ました!どうもありがとうございました! – HappyStorm
私は、fit_generator()ルーチンのどこにでも指定されたbatch_sizeを見ていません。バッチサイズはどこから推測されますか?彼らはbatch_sizeを(あなたのジェネレータの長さ)/(steps_per_epoch)として定義していますか?彼らはそれが「典型的には等しい」と言っているが、これはまったく等しいことを意味する。 –