Kerasのfit_generator
を用いた画像認識用の学習を行っているのですが、
バッチ処理とエポックの関係について理解が足りていないので教えて頂きたく思います。
(とりあえず実働はしているのですが、どういう流れで動いているか把握しきれていない状態です)
前提条件として、学習用画像が2000枚(100種類のラベルが存在し、1ラベルにつき20枚の画像が存在)、
バッチ数を32、エポック数を10としています。(評価用画像は今は割愛)
質問1.steps_per_epoch = 2000 / 32 = 62
としました。
Sequentialモデル - Keras Documentation
のsteps_per_epochにある「典型的には」の計算式を用いています(画像総数/バッチ数)
この場合、以下のような挙動をするという認識で合っていますでしょうか?
■1エポック目 ・1回目のバッチ処理:1〜32枚目の画像を学習 ・2回目のバッチ処理:33〜64枚目の画像を学習 …… ・62回目のバッチ処理:2017〜2048枚目の画像を学習(実際は17〜48枚目?) ■以降10エポック目まで1エポック目と同じことの繰り返し →結果的に2048枚を10回学習する。
質問2.一部分ごとの学習がしたかった為、steps_per_epoch = 2000 / 32 / 10 = 6
としました。
この場合、以下のような挙動をするという認識で合っていますでしょうか?
■1エポック目 ・1回目のバッチ処理:1〜32枚目の画像を学習 ・2回目のバッチ処理:33〜64枚目の画像を学習 …… ・6回目のバッチ処理:161〜192枚目の画像を学習 ■2エポック目 ・1回目のバッチ処理:193〜224枚目の画像を学習 ・2回目のバッチ処理:224〜256枚目の画像を学習 …… ・6回目のバッチ処理:353〜384枚目の画像を学習 (以下省略) →結果的に steps_per_epoch*エポック数*バッチ = 6*10*32 = 1920枚 を1回学習する。
質問3.質問2が正しい場合。
steps_per_epoch=6, initial_epoch=1, epochs=2
と設定したfit_generator
を2回呼んだとします。
この場合、「質問2の2エポック目(193〜384枚目)を2回学習する(他の画像は学習しない)」という扱いになるのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/27 07:07