Kerasvalu_generator с обратным вызовом - PullRequest
0 голосов
/ 02 марта 2019

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

model = load_model('/models/model.h5')

img_width = 120
img_height = 120
batch_size = 32

data_generator = ImageDataGenerator(rescale=1. / 255.)

test_generator = data_generator.flow_from_directory(
        '/data/test',
        target_size=(img_width, img_height),
        batch_size=batch_size,
        class_mode='binary')

STEP_SIZE_TEST = test_generator.n // test_generator.batch_size


class TestCallback(Callback):
    def on_test_batch_begin(self, batch, logs=None):
        print('Evaluating batch: ' + str(batch))


test_callback = TestCallback()

model.evaluate_generator(test_generator, STEP_SIZE_TEST, callbacks=[test_callback])

Ошибка:

Traceback (most recent call last):
  File "/test_callback.py", line 34, in <module>
    model.evaluate_generator(generator=test_generator, steps=STEP_SIZE_TEST, callbacks=[test_callback])
  File "/miniconda3/envs/models/lib/python3.6/site-packages/keras/legacy/interfaces.py", line 91, in wrapper
    return func(*args, **kwargs)
TypeError: evaluate_generator() got an unexpected keyword argument 'callbacks'

Когда я редактирую код и опускаю ключевое слово следующим образом:

model.evaluate_generator(test_generator, STEP_SIZE_TEST, [test_callback])

Я получаю следующую ошибку:

Exception in thread Thread-16:
Traceback (most recent call last):
  File "/miniconda3/envs/models/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "/miniconda3/envs/models/lib/python3.6/threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "/miniconda3/envs/models/lib/python3.6/site-packages/keras/utils/data_utils.py", line 671, in _run
    executor.apply_async(next_sample, (self.uid,)), block=True)
  File "/miniconda3/envs/models/lib/python3.6/queue.py", line 127, in put
    if self.maxsize > 0:
TypeError: '>' not supported between instances of 'list' and 'int'

Моя версия keras - 2.2.4

1 Ответ

0 голосов
/ 02 марта 2019

Документация, которую вы видите, относится к основной ветке.Аргумент callbacks не поддерживается в 2.2.4.В 2.2.4 третьим аргументом по-прежнему является max_queue_size, и поэтому при интерпретации списка [test_callback] как int возникает ошибка.

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