Большой размер партии сокращает время обучения - PullRequest
1 голос
/ 22 мая 2019

Я использую 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)

1 Ответ

3 голосов
/ 22 мая 2019

время обновления веса почти не учитывается в этой ситуации

вы можете проверить, нужно ли вычислять для переноса вещи между памятью и диском

при использовании размера 256

Вы можете настроить параллельные задачи, если хотите использовать добавление размера пакета для сокращения времени!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...