Keras 2.0.0:如何在回调函数“on_epoch_end()”中访问和修改训练数据?

时间:2018-01-04 21:05:04

标签: callback keras-2

我正在使用Keras 2.0.0和Theano。

我想更新每个纪元之间的训练数据。我可以使用nb_epochs = 1在for循环中完成它,但使用on_epoch_end回调它会更优雅。

这是我的试验性代码,基于Keras 1示例(blog post):

{{1}}

不幸的是,似乎self.model.training_data不再存在了。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我自己遇到了这个问题,并使用model.fit_generator方法而不是标准的fit方法解决了。您可以通过这种方式在每个时期对数据进行一些修改。我不确定您是否可以通过这种方式访问​​model对象本身,但是对于我的问题,我只需要沿一个内轴对数据进行混洗。

示例代码:

def shuffle_gen(x_train, y_train):
    while True:
        shuffle_inner_axis(x_train, y_train)
        for b_i in range(steps_per_epoch):
            yield(x_train[b_i * batch_size:(b_i_1) * batch_size],
                  y_train[b_i * batch_size:(b_i_1) * batch_size])
    return

model.fit_generator(shuffle_gen(x_train, y_train), steps_per_epoch, n_epochs)