Оцените модель keras с помощью генератора данных изображения - PullRequest
0 голосов
/ 01 ноября 2019

Итак, я обучил модель Keras, используя ImageDataGenerator, вызвав метод fit_generator и передав ему объект ImageDataGenerator.

Теперь я хочу оценить модель с тем же ImageDataGenerator объектом. Но я думаю, что чего-то не хватает.

У меня есть данные в 2 переменных,

ck_train = ImageDataGenerator().flow_from_directory(train_path, target_size=(
    224, 224), classes=['happy', 'neutral', 'surprise'], batch_size=32)
ck_test = ImageDataGenerator().flow_from_directory(test_path, target_size=(
    224, 224), classes=['happy', 'neutral', 'surprise'], batch_size=16)

Я пытался оценить модель с помощью

deXpression.evaluate_generator(ck_test)

, ноЯ получаю эту ошибку

-----------------------------------------------------------------------
ValueError                            Traceback (most recent call last)
<ipython-input-6-0d318201cacd> in <module>
----> 1 deXpression.evaluate_generator(ck_test)

~/anaconda3/envs/gandola/lib/python3.7/site-packages/keras/legacy/interfaces.py in wrapper(*args, **kwargs)
     89                 warnings.warn('Update your `' + object_name + '` call to the ' +
     90                               'Keras 2 API: ' + signature, stacklevel=2)
---> 91             return func(*args, **kwargs)
     92         wrapper._original_function = func
     93         return wrapper

~/anaconda3/envs/gandola/lib/python3.7/site-packages/keras/engine/training.py in evaluate_generator(self, generator, steps, max_queue_size, workers, use_multiprocessing, verbose)
   1470             workers=workers,
   1471             use_multiprocessing=use_multiprocessing,
-> 1472             verbose=verbose)
   1473 
   1474     @interfaces.legacy_generator_methods_support

~/anaconda3/envs/gandola/lib/python3.7/site-packages/keras/engine/training_generator.py in evaluate_generator(model, generator, steps, max_queue_size, workers, use_multiprocessing, verbose)
    299             steps = len(generator)
    300         else:
--> 301             raise ValueError('`steps=None` is only valid for a generator'
    302                              ' based on the `keras.utils.Sequence` class.'
    303                              ' Please specify `steps` or use the'

ValueError: `steps=None` is only valid for a generator based on the `keras.utils.Sequence` class. Please specify `steps` or use the `keras.utils.Sequence` class.

Пожалуйста, скажите мне:

1) Если я двигаюсь в правильном направлении?
2) Чего мне не хватает, если я?
3) Как я могу сделать это с помощью объекта ImageDataGenerator?
4) Каким может быть правильный подход к решению задачи, которую я пытаюсь достичь?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Может быть, этот способ может дать вам представление:

train_datagen = ImageDataGenerator(
    rescale=1./255,)

test_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
    train_data_dir,
    color_mode= "grayscale",
    target_size=(img_width, img_height),
    batch_size=128,
    class_mode='categorical',)    

validation_generator = test_datagen.flow_from_directory(
    validation_data_dir,
    color_mode= "grayscale",
    target_size=(img_width, img_height),
    batch_size=128,
    class_mode='categorical')

 #%%
hist = model.fit_generator(
    train_generator,
    samples_per_epoch=nb_train_samples,
    nb_epoch=nb_epoch,
    validation_data=validation_generator,
    nb_val_samples=nb_validation_samples)

scoreSeg = model.evaluate_generator(validation_generator, 400)
0 голосов
/ 01 ноября 2019

Я исправил проблему. Проблема была в параметре steps model.evaluate_generator.

STEP_SIZE_TEST = ck_test.n // ck_test.batch_size
deXpression.evaluate_generator(generator=ck_test, steps=STEP_SIZE_TEST)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...