batch_size、steps_perエポック、および検証ステップを設定する方法


26

Kerasを使用してCNNを学び始めています。私はtheanoバックエンドを使用しています。

値を次のように設定する方法がわかりません。

  • バッチサイズ、
  • エポックごとのステップ、
  • validation_steps。

batch_sizeトレーニングセットに240,000個のサンプルがあり、テストセットに80,000個のサンプルがある場合、エポックごとのステップ、検証ステップに設定する値は何ですか?


ハードウェアの仕様は何ですか?一般的に、人々は32/64のバッチサイズを使用し、エポックは10〜15として使用し、上記からエポックごとのステップを計算できます
Aditya

回答:


28
  • batch_sizeは、各ミニバッチのサンプル数を決定します。その最大値はすべてのサンプルの数であり、勾配降下を正確にします。学習率が十分に小さい場合、損失は最小値に向かって減少しますが、反復は遅くなります。その最小値は1であり、確率的勾配降下になります。高速ですが、勾配ステップの方向は1つの例のみに基づいており、損失が跳ね返る場合があります。batch_sizeでは、正確な勾配方向と高速反復という2つの極端な値の間で調整できます。また、モデル+データセットが使用可能な(GPU)メモリに収まらない場合、batch_sizeの最大値が制限される場合があります。
  • steps_per_epochトレーニングエポックが終了したと見なされるまでのバッチ反復回数。固定サイズのトレーニングセットがある場合、それを無視できますが、巨大なデータセットがある場合、またはオンザフライでランダムデータ拡張を生成する場合、つまり、トレーニングセットのサイズが(生成された)無限である場合に役立ちます。トレーニングデータセット全体を確認する時間があれば、このパラメーターをスキップすることをお勧めします。
  • validation_steps steps_per_epochと似ていますが、トレーニングデータではなく検証データセットにあります。検証データセット全体を確認する時間があれば、このパラメーターをスキップすることをお勧めします。

「このパラメーターをスキップする」とはどういう意味ですか?パラメータを削除すると、が表示されますWhen using data tensors as input to a model, you should specify the steps_per_epoch argument
ニコラスラウル

ドキュメントによると、メソッドfitのパラメーターsteps_per_epochにはデフォルトがあるため、オプションである必要があります。「デフォルトのNoneは、データセット内のサンプル数をバッチサイズで割った値、またはそれが決定できない場合は1に等しい」出典:keras.io/models/model
Silpion

1

Githubに答えがあります

  1. model.fit_generator 入力データセットジェネレーターを無限に実行する必要があります。
  2. steps_per_epochジェネレーターsteps_per_epoch時間を呼び出して、データセット全体を1回生成するために使用されます
  3. 一方epochs、データセット全体でモデルがトレーニングされる回数を示します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.