я использую 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, это должно означать, что перед обновлением веса используются данные размер партии. Я прав?
Если мои два утверждения верны, это должно означать, что уменьшение размера пакета увеличит время на 1 эпоху, поскольку будет больше обновлений веса.
Почему мое более низкое время эпохи, когда я использую размер пакета 64? Почему я получил большое время эпохи при использовании размера партии = 256?
Дайте мне знать, если вы знаете больше информации или переформулировки
Обновлено: я не понимаю, почему, но когда я устанавливаю размер пакета = 256, у меня есть общее количество шагов (партий образцов) в эпоху 256, когда оно должно быть len (Train_X)/256 (= 58)
время обновления веса почти не в счет в этой ситуации
вы можете проверить, нужно ли вычислять передачу между памятью и диском
при использовании 256 размера
вы можете настроить одновременные задачи, если хотите использовать дополнительный размер пакета для сокращения времени!
это просто из-за того, что размер изображения 256 не хватает памяти, поэтому компьютер переносит вещи между памятью и диском
Здравствуйте, спасибо за помощь! извините, но я действительно не понимаю, что вы имеете в виду :/. Не могли бы вы уточнить свой ответ?