7

我将 Keras 2.0.0 与 Theano 一起使用。

我想在每个时期之间更新训练数据。我可以使用 nb_epochs=1 在 for 循环中执行此操作,但使用 on_epoch_end 回调会更优雅。

这是我的暂定代码,基于 Keras 1 示例(博客文章):

class callback_change_X_train(keras.callbacks.Callback):

def on_epoch_end(self, epoch, logs={}):
    X_train = my_function_to_update_X_train(...)
    self.model.training_data[0] = X_train

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

非常感谢任何帮助!

4

1 回答 1

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)
于 2018-08-17T22:11:16.913 回答