如何在 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 生成器中引用纪元数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Keras 中创建一个依赖于纪元数的损失函数参数?

如何在 tf.keras 中填写 ModelCheckPoint 类的文件路径参数? (无法理解纪元值和日志概念)

如何在 keras 中使用网格搜索和 fit 生成器

如何生成时间戳unix纪元格式nodejs?

如何组合两个 keras 生成器功能

如何在生成器提供的 Keras 自定义损失函数中访问样本权重?