Keras fit_generator Остановите изменение: плитка не может распространяться за пределы изображения - PullRequest
1 голос
/ 28 марта 2019

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

train_datagen = ImageDataGenerator(rescale = 1./255, horizontal_flip = True)
# output: Found 440 images belonging to 2 classes.
test_datagen = ImageDataGenerator(rescale=1./255)
# output: Found 554 images belonging to 2 classes.

training_generator = train_datagen.flow_from_directory('dir', batch_size=20, class_mode='categorical')
testing_generator = test_datagen.flow_from_directory('dir', batch_size=30, class_mode='categorical')

Когда я пытаюсь запустить:

history = model.fit_generator(training_generator, epochs=150, validation_data=testing_generator, callbacks= [early_stopping_monitor, model_checkpoint])

Я добираюсь до последней партии и получаю одну из двух ошибок StopIteration.

Для размера партии = 20 я получаю:

Epoch 1/150
21/22 [==================>..] - ETA: 0s - loss: 0.8482 - acc: 0.5619
Traceback (mostrecent call last):
...
File "...\keras\engine\\training_generator.py", line 309, in evaluate_generator
    generator_output=next(output_generator)

File "..\keras\utils\data_utils.py", line 583, in get
    six.raise_from(StopIteration(e), e)

StopIteration: tile cannot extend outside image

Для размера партии = 24 я получаю:

Epoch 1/150
18/19 [==================>..] - ETA: 0s - loss: 0.8482 - acc: 0.5619
Traceback (mostrecent call last):
...
File "...\keras\engine\\training_generator.py", line 309, in evaluate_generator
    generator_output=next(output_generator)

File "..\keras\utils\data_utils.py", line 583, in get
    six.raise_from(StopIteration(e), e)

StopIteration: -2

Я не понимаю. Я видел это: StopIteration: generator_output = next (output_generator) , но, похоже, это был человек, делающий свой собственный генератор данных, поэтому кодер отвечает за постоянную способность генератора предоставлять данные. Но я использую flow_from_directory, поэтому разве это не должно быть достаточно умным, чтобы понять, как всегда предоставлять данные?

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

Что мне здесь не хватает?

...