用于keras fit_-gen验证数据的测试数据

2024-04-19 14:24:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我用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
...

这个时代似乎要结束了,但是新的训练又开始了。在

^{pr2}$

另外,我把相关代码贴在这里

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])

我做错什么了吗?我找不到任何解决办法

真希望有人能帮我,谢谢

-----------------------------------更新---------------------------------

一开始我以为是steps_per_epoch的错误。但是我错了。当我在没有steps_per_epoch的情况下重新开始培训时。它又显示出来了。在

通过消除,我发现它是由validation_data引起的。我不知道为什么,我不能删除validation_data,因为如果我在回调中使用tensorboard,那么它必须被使用。我发现如果我删除了tensorboard的功能并保留了验证数据,它会处理得很快。在

以下是我在回调中的tensorboard函数:

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

keras.callbacks.TensorBoard和{}之间一定有某种关系

此外,正如validation_steps的api所说:

Only relevant if validation_data is a generator. Total number of steps (batches of samples) to yield from generator before stopping. Optional for Sequence: if unspecified, will use the len(validation_data) as a number of steps.

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


Tags: of数据datarangestepsgeneratorfitkeras
1条回答
网友
1楼 · 发布于 2024-04-19 14:24:25

fit_generator还创建一个验证数据发电机。所以它的验证过程是成批的,训练后看到的只是中间结果,模型不会根据验证数据进行训练。在

下面是一些相关的讨论:

Test data being used for validation data?

Test data being used for validation data in chinese

相关问题 更多 >