概述
在使用keras进行神经网络训练时,在keras中为了减少数据对CPU/GPU的占用率,可以选择使用generator来生成数据对应使用fi_generator来进行训练,我们来看看fit_generator 在官方API中的讲解
fit_generator(generator, steps_per_epoch=None, epochs=1,
verbose=1, callbacks=None, validation_data=None,
validation_steps=None, class_weight=None,
max_queue_size=10, workers=1, use_multiprocessing=False,
shuffle=True, initial_epoch=0)
在这里主要看看steps_per_epoch和epoch的区别
generator: 一个生成器,或者一个 Sequence (keras.utils.Sequence) 对象的实例,
以在使用多进程时避免数据的重复。 生成器的输出应该为以下之一:
一个 (inputs, targets) 元组
一个 (inputs, targets, sample_weights) 元组。
这个元组(生成器的单个输出)组成了单个的 batch。
因此,这个元组中的所有数组长度必须相同(与这一个 batch 的大小相等)。
不同的 batch 可能大小不同。 例如,一个 epoch 的最后一个 batch 往往比其他 batch 要小,
如果数据集的尺寸不能被 batch size 整除。 生成器将无限地在数据集上循环。当运行到第 steps_per_epoch 时,记一个 epoch 结束。
意思就是generator每次被调用返回的tuple的len,都是一个batch的大小(例如32),包含了inputs-(batch_size,feature),target-(batch_size,target_feature).
steps_per_epoch: 在声明一个 epoch 完成并开始下一个 epoch 之前从 generator 产生的总步数(批次样本)。
它通常应该等于你的数据集的样本数量除以批量大小。 对于 Sequence,它是可选的:如果未指定,将使用len(generator) 作为步数。
说人话,steps_per_epoch的参数就是,对于下一次的epoch开始之前,调用你的generator产生准备数据的次数,你的generator必须每次返回32(batch_size)个training样本,那么steps_per_epoch = total_samples//(batch_size),这里的//是整除的意思,你也可以使用numpy.ceil的函数向上取整,这样做的目的是为了舍弃最后不满足batch_size的数据。
最后
以上就是淡定小笼包为你收集整理的keras 中fit_generator的epoch的疑问的全部内容,希望文章能够帮你解决keras 中fit_generator的epoch的疑问所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复