Тестовые данные, используемые для проверки данных в keras fit_generator - PullRequest
0 голосов
/ 22 апреля 2019

Я использую керас (tenorflow) для обучения моей модели. Я использую функцию fit_generator, потому что я использую ImageDataGenerator для увеличения данных.

Вот мой вопрос, я нахожу, что есть два вида тренировочного процесса. Первый я не знаю, что это такое, но позже просто модель учится по исходным данным. И ситуация ниже:

...

    145/147 [============================>.] - ETA: 0s - loss: 1.5847 - acc: 0.5120
    146/147 [============================>.] - ETA: 0s - loss: 1.5838 - acc: 0.5117
...

кажется, что эта эпоха закончится, но затем в этой эпохе начнется новое обучение.

...
     32/1567 [..............................] - ETA: 3:11 - loss: 1.8080 - acc: 0.4688
     64/1567 [>.............................] - ETA: 2:58 - loss: 1.7491 - acc: 0.5000
...

Кроме того, я выкладываю соответствующий код прямо здесь

datagen = keras.preprocessing.image.ImageDataGenerator( featurewise_std_normalization=True, rotation_range=20,
                                 width_shift_range=0.2, height_shift_range=0.2, horizontal_flip=True)
datagen.fit(trainX)
model.fit_generator(datagen.flow(trainX, trainY, batch_size=BATCH_SIZE),
                            steps_per_epoch=trainX.shape[0]//BATCH_SIZE, epochs=10,
                            validation_data=(testX,testY),
                            verbose=1,callbacks=[tb_cb,reduce_lr,early])

Я сделал что-то не так? И я не нахожу никакого решения

Очень надеюсь, что кто-то может мне помочь, спасибо

-------------------------------- Updata -------------- -------------------

Сначала я подумал, что это ошибка steps_per_epoch. Но я ошибаюсь. Когда я возобновляю тренировку без steps_per_epoch. Это показывает снова.

Путем исключения я обнаружил, что это вызвано validation_data. Я не знаю почему, и я не могу удалить validation_data, потому что его необходимо использовать, если я использую tensorboard в обратных вызовах. И я считаю, что это будет происходить так быстро, если я удалю функцию тензорной доски и оставлю данные validation_data.

вот моя функция тензорной доски в обратных вызовах:

 tb_cb = keras.callbacks.TensorBoard(log_dir=board_file, write_images=1, histogram_freq=1)

Должно быть какое-то отношение между keras.callbacks.TensorBoard и validation_data

Кроме того, как указано в API для validation_steps:

Уместно только если validation_data это генератор. Общее количество шагов (партий образцов) дать от generator до остановки. Необязательно для Sequence: если не указано, будет использоваться len(validation_data) как количество шагов.

И я могу сказать, что шаги нового учебного процесса фактически равны количеству моих проверочных данных.

1 Ответ

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

fit_generator также создайте генератор данных проверки. Таким образом, процесс проверки делится на партии, и то, что я вижу после обучения, является лишь промежуточным результатом. И модель не будет обучаться на данных проверки.

вот некоторые относительные дискуссии по этому поводу:

Испытательные данные, используемые для данных проверки?

Испытательные данные, используемые для данных проверки на китайском языке

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