Як встановити batch_size, steps_per epoch та кроки перевірки


26

Я починаю вивчати CNN, використовуючи Keras. Я використовую бекенд Theano.

Я не розумію, як встановити значення для:

  • batch_size,
  • кроки в епоху,
  • validation_steps.

Яким має бути встановлене значення batch_size, крок за епохою та етапи перевірки, якщо у мене є 240 000 зразків у навчальному наборі та 80 000 у тестовому наборі?


Які ваші технічні характеристики? Це залежить від того, що зазвичай люди використовують розмір партії 32/64, епохи як 10 ~ 15, і тоді ви можете обчислити кроки за епоху з вищезгаданого ..
Aditya

Відповіді:


28
  • batch_size визначає кількість зразків у кожній міні-партії. Його максимум - кількість всіх зразків, що робить градієнтне спуск точним, втрата зменшиться до мінімальної, якщо швидкість навчання досить мала, але ітерації повільніші. Його мінімум дорівнює 1, що призводить до стохастичного схилу градієнта: Швидкий, але напрямок кроку градієнта засноване лише на одному прикладі, втрати можуть стрибати навколо. batch_size дозволяє регулювати між двома крайнощами: точний напрямок градієнта та швидку ітерацію. Також максимальне значення для batch_size може бути обмеженим, якщо ваш набір моделей + даних не вписується у наявну (GPU) пам'ять.
  • 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.
Ніколя Раул

Згідно з документацією, параметр steps_per_epoch методу fit має за замовчуванням і, таким чином, повинен бути необов'язковим: "Типовий None не дорівнює кількості зразків у вашому наборі даних, розділеному на розмір партії, або 1, якщо це неможливо визначити". Джерело: keras.io/models/model
Сільпіон

1

є відповідь у Github

  1. model.fit_generator вимагає, щоб генератор набору даних був нескінченним.
  2. steps_per_epochвикористовується для генерування всього набору даних один раз за допомогою виклику генератора steps_per_epochразів
  3. враховуючи epochsте, скільки разів навчається модель за весь набір даних.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.