gpt4 book ai didi

python - fit_generator 中的 Keras steps_per_epoch 是如何工作的

转载 作者:行者123 更新时间:2023-11-28 20:35:25 27 4
gpt4 key购买 nike

在 Keras 文档中 - steps_per_epoch: 在声明一个纪元结束并开始下一个纪元之前从生成器产生的总步数(样本批处理)。它通常应该等于数据集的唯一样本数除以批量大小。

我有 3000 个样本。如果我设置 steps_per_epoch=3000 它的工作速度很慢。如果我设置 steps_per_epoch=300 它的工作速度更快,我认为 Batch 有效!

但是后来我比较了第一种情况和第二种情况分配了多少显存。并没有注意到很大的不同。如果我使用一个简单的 fit() 函数,那么差异就很大了。所以这是真正的加速,还是我只处理了 300 个示例,而不是 3000 个?

这个参数有什么必要?我怎样才能加快训练速度?我的生成器代码:

def samples_generator(self, path_source, path_mask):
while 1:
file_paths_x = self.get_files(path_source)
file_paths_y = self.get_files(path_mask)
for path_x, path_y in zip(file_paths_x, file_paths_y):
x = self.load_pixels(path_x, 3, cv2.INTER_CUBIC)
y = self.load_pixels(path_y, 0, cv2.INTER_NEAREST)
yield (x, y)

最佳答案

steps_per_epoch 参数是完成一个完整纪元所需的样本批处理数。这取决于您的批量大小。批量大小是在您初始化训练数据的地方设置的。例如,如果您使用 ImageDataGenerator.flow()ImageDataGenerator.flow_from_directory() 执行此操作,则批量大小由 batch_size 每个参数中的参数。

你说你有 3000 个样本。

  • 如果您的批量大小为 100,则 steps_per_epoch 将为 30。
  • 如果您的批量大小为 10,则 steps_per_epoch 将为 300。
  • 如果您的批量大小为 1,则 steps_per_epoch 将为 3000。

这是因为 steps_per_epoch 应该等于样本总数除以批量大小。以下两个视频提供了在 Keras 中实现此功能的过程。

您必须设置 steps_per_epoch 的原因是生成器设计为无限期运行(参见 docs:

"The generator is expected to loop over its data indefinitely."

)。您通过设置 while 1 实现了这一点。由于 fit_generator() 应该运行 epochs=x 次,该方法必须知道在这个无限循环中下一个纪元何时开始(因此,数据必须是再次从头开始绘制)。

关于python - fit_generator 中的 Keras steps_per_epoch 是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46820609/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com