Validation 验证数据批量大小是否为1?(凯拉斯)

Validation 验证数据批量大小是否为1?(凯拉斯),validation,neural-network,keras,Validation,Neural Network,Keras,在Keras中,有一个选项可将验证集批次的大小设置为一: valid_batches = ImageDataGenerator().flow_from_directory(valid_path, ... batch_size=1) 然后,模型仅使用验证数据中的一个对象在每个训练数据纪元后验证模型是否正确?如果是这样的话,那么我的模型不应该得到很好的验证分数。但是当我运行模型时,它运行起来没有任何问题,不断改进,并且似乎使用了许多验证对象进行评估。有人能解释一下吗?多谢各位 你给我们的信息实在太

在Keras中,有一个选项可将验证集批次的大小设置为一:

valid_batches = ImageDataGenerator().flow_from_directory(valid_path, ... batch_size=1)

然后,模型仅使用验证数据中的一个对象在每个训练数据纪元后验证模型是否正确?如果是这样的话,那么我的模型不应该得到很好的验证分数。但是当我运行模型时,它运行起来没有任何问题,不断改进,并且似乎使用了许多验证对象进行评估。有人能解释一下吗?多谢各位

你给我们的信息实在太少了,所以我会尽量给你所需要的信息,以便你理解,也许你自己会解决它

valid_batches = ImageDataGenerator().flow_from_directory(valid_path, ... batch_size=1)
这给你一个发电机。它将完成python生成器所做的工作:生成批验证数据,在您的情况下,这些批的大小为1

但是,当您这样做时:

model.fit_generator(train_batches, validation_data=valid_batches, ... )
keras所做的是使用生成器获取一些验证数据。但它不会在一次调用有效的_批次后停止,它将进行几次设置。批不是您的整个验证集,keras假设您将一批一批地为其提供验证数据集。因此,它会根据需要在验证数据生成器上重复多次

指定要在一个验证步骤中生成批次的次数的方法是使用
validation\u steps
参数,如下所示:

model.fit_generator(train_batches, validation_data=valid_batches,  validation_steps=10... )
这样,您的验证将使用
validation\u steps*batch\u size=10*1=10
样本进行每次执行的验证


我希望它能有所帮助:-)如果没有,请更具体地说明您的代码。一个好的堆栈溢出问题应该包含一个最小的可重复的错误代码。

您确实给了我们很少的信息,所以我将尝试给您提供您需要的信息,以便您理解并可能自己修复它

valid_batches = ImageDataGenerator().flow_from_directory(valid_path, ... batch_size=1)
这给你一个发电机。它将完成python生成器所做的工作:生成批验证数据,在您的情况下,这些批的大小为1

但是,当您这样做时:

model.fit_generator(train_batches, validation_data=valid_batches, ... )
keras所做的是使用生成器获取一些验证数据。但它不会在一次调用有效的_批次后停止,它将进行几次设置。批不是您的整个验证集,keras假设您将一批一批地为其提供验证数据集。因此,它会根据需要在验证数据生成器上重复多次

指定要在一个验证步骤中生成批次的次数的方法是使用
validation\u steps
参数,如下所示:

model.fit_generator(train_batches, validation_data=valid_batches,  validation_steps=10... )
这样,您的验证将使用
validation\u steps*batch\u size=10*1=10
样本进行每次执行的验证


我希望它能有所帮助:-)如果没有,请更具体地说明您的代码。一个好的堆栈溢出问题应该包含一个最小的可重复的错误代码。

请提供更多关于您实际如何进行验证的代码。这里有效批次是一个生成器,它没有说明如何使用它。@NassimBen“有效批次”只在model.fit\u生成器中使用(训练批次,验证数据=有效批次,…)。在keras文档中有关于这一点的非常简短的信息,它说明了我有什么验证数据,在本例中是一个生成器。请提供更多关于您实际如何进行验证的代码。这里有效批次是一个生成器,它没有说明如何使用它。@NassimBen“有效批次”只在model.fit\u生成器中使用(训练批次,验证数据=有效批次,…)。在keras文档中有关于这一点的非常简短的信息,它说明了我有什么验证数据,在这个例子中是一个生成器。这个答案非常好,谢谢!这种混乱源于我没有仔细阅读文档。在我的代码中,我没有指定验证步骤,在这种情况下,它被设置为默认值,即验证数据的长度。这个答案完全正确,谢谢!这种混乱源于我没有仔细阅读文档。在我的代码中,我没有指定验证步骤,在这种情况下,它被设置为默认值,即验证数据的长度。