Я использую CNN для классификации изображений; Я делаю увеличение данных с помощью keras ImageDataGenerator
Я думаю, что что-то упустил.
A /// train =model.fit_generator(image_gen.flow(train_X, train_label, batch_size=64),epochs=100,verbose=1,validation_data=(valid_X, valid_label),class_weight=class_weights,callbacks=[metrics],steps_per_epoch=len(train_X)/64) # 1 epoch =20 secondes
B /// train =model.fit_generator(image_gen.flow(train_X, train_label, batch_size=15),epochs=100,verbose=1,validation_data=(valid_X, valid_label),class_weight=class_weights,callbacks=[metrics],steps_per_epoch=len(train_X)/15) # 1 epoch = 60 secondes
C /// train =model.fit_generator(image_gen.flow(train_X, train_label, batch_size=256),epochs=100,verbose=1,validation_data=(valid_X, valid_label),class_weight=class_weights,callbacks=[metrics],steps_per_epoch=len(train_X)/256) # 1 epoch =345secondes
В ситуации A я использую пакет размером 64, мне нужно 20 секунд на эпоху. Ситуация B с размером партии 15, мне нужно 60 секунд на эпоху. Ситуация C с размером пакета 256 требует 345 секунд для каждой эпохи.
Что я понимаю:
- размер партии = номер изображения используется для обновления веса. Если я получил 100 изображений с размером партии 10, вес будет обновляться 10 раз в каждую эпоху. Я прав?
Steps_per_epoch - это номер изображения, созданного Keras DataAugmenteur. Поскольку я присваиваю значение length (Train_X) / batch_size, это должно означать, что перед обновлением веса используются данные batch_size . Я прав?
Если мои два подтверждения верны, это должно означать, что уменьшение размера партии увеличит время на 1 эпоху, поскольку будет больше весового обновления.
Почему у меня меньше времени, когда я использую пакет размером 64? Почему у меня большая эпоха при использовании размера партии = 256?
Дайте мне знать, если вы знаете больше информации или переформулировку
РЕДАКТИРОВАТЬ: я не понимаю, почему, но когда я установил размер партии = 256, у меня есть общее количество шагов (пакетов образцов) за эпоху 256, когда оно должно быть len (Train_X) / 256 (= 58)