ImageDataGenerator и fit_generator в Керасе: понимание эпох - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь понять, как генератор данных в Керасе используется во время обучения.Если есть настройки, такие как

datagen = ImageDataGenerator()
datagen.fit(x_train)
model.fit_generator(datagen.flow(x_train, x_test, batch_size=32),
                    steps_per_epoch=100,
                    epochs=20)

Как я могу понять, сколько данных «генерируется» и когда?У меня возникают проблемы с пониманием, как batch_size и steps_per_epoch связаны.

Является ли приведенный выше эквивалент что-то вроде

for epoch 1 to 20:
    for each img in x_train:
        generate 100 morphed images based on img
        put these into batches of size 32
        fit each batch

В качестве альтернативы, возможно, это работает так:

for epoch 1 to 20:
    for each img in x_train:
        generate 100 morphed images based on img
    put all of the 100*x_train.shape[0] images into batches of size 32
    fit each batch

Так как же это работает?Есть ли способ исследовать / отладить это?

1 Ответ

0 голосов
/ 24 апреля 2018

Работает как:

for epoch in range(20):
    for step in range(steps_per_epoch):
       yield x,y     
       #where x.shape = (32,imgshape1,imgshape2,imgshape3)
       #where y.shape = (32,your_output_shape....)

Чтобы точно увидеть, как генератор создает пакеты (я подозреваю, что это измененный img1, измененный img2, измененный img3 ..., с возможной перетасовкой), вы можете:

gen = datagen.flow(x_train, x_test, batch_size=32)

for i in range(2*your_total_images):
    x,y = next(gen) #gets a batch
    useAPlottingLibraryAndPlot(x) #where x contains 32 images
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...