keras+tensorboard重新训练时曲线绘制异常

背景:keras+tensorboard hook进行训练时可根据epoch自动绘制scalar相关的图表

问题:训练了20个epoch后,根据之前的训练结果,调整了部分超参数然后load之前的模型,继续训练。这个时候,tensorboard上的曲线又从零开始了,且之前的曲线也在,导致了图表的混乱。

需求:能否在重新训练的时候,让曲线与之前的曲线衔接起来?如果删除之前的图表或者新开一个目录也能解决图表冲突的问题,但是无法同时看到两个阶段的曲线。


发帖人:winter
发帖时间:2018-5-25 11:30:09

楼主可以接受使用 initial_epoch 参数吗?

import numpy as np
from keras.models import Model
from keras.layers import Input, Dense
from keras.callbacks import TensorBoard

test = np.arange(2000.).reshape((-1, 1))

x = Input(shape=(1,))
y = Dense(1)(x)
model = Model(inputs=x, outputs=y)
model.compile(optimizer='Adam',
              loss='logcosh',
              metrics=['accuracy'])

# 第一次训练
first_epoch = 20
model.fit(x=test, y=test, epochs=first_epoch,
          callbacks=[TensorBoard()])
json_string = model.to_json()
model.save_weights('./logs/my_model_weights.h5')
del model

# 重新训练
from keras.models import model_from_json
from keras.optimizers import SGD

new_model = model_from_json(json_string)
new_model.load_weights('./logs/my_model_weights.h5')
new_model.compile(optimizer=SGD(lr=1e-7),
              loss='mean_squared_error',
              metrics=['accuracy'])

second_epoch = 10
new_model.fit(x=test, y=test,
              epochs=first_epoch+second_epoch,
              callbacks=[TensorBoard()],
              initial_epoch=first_epoch)


回帖人:yunhai_luo
发表于 2018-5-25 15:15:30