背景: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