tf.estimator.train_and_evaluate
ドキュメントでは、トレーニングですべての例を表示するには、入力データセットを適切にシャッフルする必要があることが明確になっています。
オーバーフィッティング: オーバーフィッティングを避けるために、トレーニング input_fn を設定してトレーニング データを適切にシャッフルすることをお勧めします。入力パイプラインはトレーニングごとに最初から開始されるため、評価を実行する前に、モデルをもう少し長く、たとえば複数のエポックでトレーニングすることもお勧めします。これは、ローカルのトレーニングと評価にとって特に重要です。
tf.data.Dataset
私のアプリケーションでは、任意の評価頻度とshuffle()
バッファ サイズを使用して、完全なサンプルから均一にサンプルを抽出したいと考えています。それ以外の場合、トレーニングはせいぜい最初のものを見ることができます:
(steps_per_second * eval_delay * batch_size) + buffer_size
残りの要素を効果的に破棄します。システムメモリに完全なデータセットをロードせずに効率的に回避する方法はありますか?
バッファ サイズに基づいてデータセットをシャーディングすることを検討しましたが、評価が頻繁に行われないと、同じシャードで複数回反復されます (arepeat()
はパイプラインを閉じます)。理想的には、データセットを完全に反復した後に別のシャードに移動したいのですが、それは可能ですか?
ご指摘ありがとうございます。