恢复训练 tf.keras Tensorboard

Har*_*awi 9 python machine-learning keras tensorflow tensorboard

当我继续训练我的模型并在 tensorboard 上可视化进度时,我遇到了一些问题。

Tensorboard 训练可视化

我的问题是如何在不手动指定任何时期的情况下从同一步骤恢复训练?如果可能,只需加载保存的模型,它就可以global_step从保存的优化器中读取并从那里继续训练。

我在下面提供了一些代码来重现类似的错误。

import tensorflow as tf
from tensorflow.keras.callbacks import TensorBoard
from tensorflow.keras.models import load_model

mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(512, activation=tf.nn.relu),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=10, callbacks=[Tensorboard()])
model.save('./final_model.h5', include_optimizer=True)

del model

model = load_model('./final_model.h5')
model.fit(x_train, y_train, epochs=10, callbacks=[Tensorboard()])
Run Code Online (Sandbox Code Playgroud)

您可以tensorboard使用以下命令运行:

tensorboard --logdir ./logs
Run Code Online (Sandbox Code Playgroud)

mel*_*nya 8

您可以将initial_epoch函数中的参数设置为model.fit()您希望训练开始的时期数。考虑到模型训练直到epochs达到index 的纪元(而不是由 给出的迭代次数epochs)。在您的示例中,如果您想再训练 10 个时期,则应该是:

model.fit(x_train, y_train, initial_epoch=9, epochs=19, callbacks=[Tensorboard()])
Run Code Online (Sandbox Code Playgroud)

它将允许您以正确的方式在 Tensorboard 上可视化您的绘图。更多关于这些参数的信息可以在文档中找到。