如何在 Keras 生成器中引用纪元数?
Posted
技术标签:
【中文标题】如何在 Keras 生成器中引用纪元数?【英文标题】:How do I reference the epoch number within a Keras generator? 【发布时间】:2017-06-18 14:46:40 【问题描述】:我正在构建一个 Python 生成器,供 Keras fit_generator 函数使用。我想使用生成器中的当前纪元计数来调整值。有没有办法引用这个数字?
def generate_arrays_from_file(path):
while 1:
f = open(path)
for line in f:
x, y = process_line(line)
epoch_number = ?
x = x + epoch_number
yield (x, y)
f.close()
model.fit_generator(generate_arrays_from_file('/my_file.txt'),
samples_per_epoch=10000, nb_epoch=10)
【问题讨论】:
***.com/questions/4548684/… 【参考方案1】:怎么样:
def generate_arrays_from_file(path, samples_per_epoch):
samples_produced_in_current_epoch = 0
epoch_number = 1
while 1:
f = open(path)
for line in f:
x, y = process_line(line)
x = x + epoch_number
samples_produced += x.shape[0]
if samples_produced_in_current_epoch > samples_per_epoch:
epoch_number += 1
samples_produced_in_current_epoch = 0
yield (x, y)
f.close()
【讨论】:
是的,这行得通!如果有办法直接引用它会很好,但这将帮助我实现我的目标。您甚至可以使用epoch_number = samples_produced_in_current_epoch / samples_per_epoch + 1
使这更简洁
如果 epoch 和样本数很高,您可能会遇到溢出问题以上是关于如何在 Keras 生成器中引用纪元数?的主要内容,如果未能解决你的问题,请参考以下文章