【发布时间】:2022-08-05 18:46:53
【问题描述】:
我有一个模型,它有 536 个训练样本,并且想遍历每个时期的所有样本。批量大小为 32,epoch 为 50。这是代码及其错误:
results = model.fit(train_X, train_y, batch_size = 32, epochs = 50, validation_data=(val_X, val_y), callbacks=callbacks)
你传递的数据集包含837个批次,但是你传递了
epochs=50和steps_per_epoch=17,一共是850步。我们不能从这个数据集中画出那么多步骤。我们建议设置steps_per_epoch=16。样本总数 / 批量大小 = 每个 epoch 的步数 = 536/32 = 16.75。如果我设置每个 epoch = 16 的步数,model.fit 将起作用。这是否意味着我每个 epoch 丢弃 24 个样本 (0.75 * 32)?
如果是,我怎样才能不丢弃这些样本?一种方法是调整批量大小以在将样本数按其进行潜水时没有残留。
如果还有其他方法,请赐教。
-
你需要使用
Dataset吗?您是否对训练数据进行了即时更改?你在使用增强吗?如果所有这些都不是,则不需要设置steps_per_epoch。您总是可以排除该参数并查看它是如何工作的。它可能会正常工作。不设置它至少可以确保使用所有输入数据。 -
@Djinn,即使我排除了参数steps_per_epoch,model.fit 函数也会输出上述错误。因此,如果不显式设置参数steps_per_epoch,该函数将无法工作。对于这种情况,是否有任何其他方法可以强制每个 epoch 16 个步骤执行 32 个批次,其余样本强制执行 24 个批次?
-
将
steps_per_epoch设置为 1。 -
@Djinn,不会将 steps_per_epoch 设置为 1 强制批量大小达到 536,因为每个时期的样本数/步数 = 536,这是批量大小?如果我有误解请赐教
-
是的。或者您可以尝试将其设置为样本数。没有固定的规则,你可以玩弄它。如果您正在使用数组或将所有内容加载到内存中,则可以真正避免所有这些。
标签: tensorflow tf.keras