测试数据用于keras fit_generator中的验证数据

时间:2019-04-22 12:10:32

标签: python tensorflow keras

我使用keras(tensorflow)训练我的模型。我使用功能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则必须使用它回调。而且我发现,如果删除tensorboard功能并保留validation_data,它将处理得如此之快。

这是我在回调函数中的张量板函数:

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

keras.callbacks.TensorBoardvalidation_data之间必须存在某种关系

此外,如validation_steps的api所述:

  

仅与validation_data相关               是一个发电机。总步骤数(一批样品)               在停止之前从generator屈服。               Sequence的可选:如果未指定,将使用               len(validation_data)作为许多步骤。

我可以说新培训过程的步骤实际上等于我的验证数据的数量。

1 个答案:

答案 0 :(得分:0)

fit_generator还创建了一个验证数据生成器。因此,它的验证过程是全部分批进行的,训练后我看到的只是中间结果。模型不会在验证数据上训练。

这是一些相关的讨论:

Test data being used for validation data?

Test data being used for validation data in chinese