首页 > 解决方案 > Tensorboard 损失图可以追溯到过去 (Keras)

问题描述

我有一个与此处描述的问题类似的问题,只是我使用的是带有 Tensorflow 后端的 Keras,而不是 Tensorflow。我已经用不同的元参数训练了 18 个用于时间序列预测的 MLP 模型,所有这些模型都是用相同的基本架构创建的。我正在扫描的 3 个元参数是模型用于预测的前瞻、模型的深度以及我是否使用 L2 正则化。

    model = Sequential()
    # input_shape should be a 3D tensor with shape (batch_size, timesteps ,input_dim)
    model.add(Flatten())
    # hidden layer sizes should drop gradually from 256 to 2*lookahead
    hidden_layer_sizes = [int(256 - i * (256 - 2 * lookahead) / depth) for i in range(depth)]
    for hidden_layer_size in hidden_layer_sizes:
        if regularization:
            model.add(Dense(hidden_layer_size, kernel_initializer="he_normal",
                        kernel_regularizer = regularizers.l2(0.01), activation=activations))
        else:
            model.add(Dense(hidden_layer_size, kernel_initializer="he_normal",
                        activation=activations))
    model.add(Dense(2 * lookahead))
    loss = losses.mean_squared_error
    model.compile(loss=loss, optimizer=self.kwargs["optimizer"], metrics=['mae'])

每个模型的张量板数据通过相关的 Keras 回调保存在单独的文件夹中

callback_tensorboard = TensorBoard(log_dir=log_dir,
                                   histogram_freq=5,
                                   write_graph=False,
                                   write_grads=True,
                                   write_images=False)  

但由于某种原因,18 个模型中有 3 个保存了两个 tensorboard 文件而不是一个,结果图表显示了这种随着时间倒退的奇怪现象 在此处输入图像描述

为什么会这样?然后删除第二个张量板文件,我该怎么做才能防止这种情况发生?

标签: pythontensorflowkerastensorboard

解决方案


发生这种情况是因为每次调用时mode.fit()都会重新初始化 keras 中的内部纪元计数器。但是,您可以在编译模型时手动设置它,例如:

model.compile(optimizer=tf.train.AdamOptimizer(),
              loss=tf.losses.mean_squared_error)
init_epoch = 0

然后当 ypu 调用 fit 时,您可以将附加参数传递给 keras,该参数描述当前时代:

epoch_count = 200
init_epoch += epoch_count
history = model.fit(x_train, y_train,
                batch_size=256,
                epochs=init_epoch,
                validation_data=(x_test, y_test),
                verbose=1,
                initial_epoch=init_epoch-epoch_count,
                )  

推荐阅读