Keras fit_生成器上的错误,比它应该运行的多了几步

2024-09-23 16:31:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现fit_generator()会比它应该运行的多出几个步骤。
我设置steps_per_epoch=100。i和k都是从0开始的。但在培训过程结束时,它将打印出k = 109。只有在添加验证数据时才会出现这种情况。在

def data_generate(xfd, yfd, x_line_offset, y_line_offset):

    while True:
        k = 0

        x_line_offset, y_line_offset = shuffle_list(x_line_offset, y_line_offset)

        for i in range(100):
            print('i = {}'.format(i))
            print('k = {}'.format(k))
            k += 1

            x_train = get_line_by_offset(xfd, x_line_offset[i])
            x_train = rescaling(x_train, 0, 65535, 0, 1)
            y_train = get_line_by_offset(yfd, y_line_offset[i])

            yield x_train, y_train

train_generator = data_generate(xfd_train, yfd_train, x_train_line_offset, y_train_line_offset)
validation_generator = data_generate(xfd_valid, yfd_valid, x_valid_line_offset, y_valid_line_offset)

model.fit_generator(train_generator, steps_per_epoch=100,
                    validation_data=validation_generator,
                    validation_steps=len(fix_y_valid_line_offset), epochs=1)

因为它将打印出k = 109,所以我假设它运行了更多的步骤。我不知道是不是虫子。但是keras日志消息在k = 99之后没有显示。 enter image description here


Tags: dataline步骤trainstepsgeneratorgeneratefit
1条回答
网友
1楼 · 发布于 2024-09-23 16:31:57

这里没有bug,只是一些实现细节。函数fit_generator()有一个默认参数max_queue_size=10。来自train_generator和{}的批将被插入队列中,然后再用于拟合/评估模型。在

当第一个epoch结束时,将生成100个批处理(k = 99)。但是,生成器将继续生成10个批以填充队列。这就是为什么你看到k = 100到{}。同时,验证过程开始,因此您还将看到k = 0, ...来自validation_generator。在

相关问题 更多 >