1.保存训练中间值和加载中间值
使用callback可以在每个批次之后保存weights
filepath = 'saver/weights1.{epoch:02d}-{loss:.2f}.hdf5'
ck = keras.callbacks.ModelCheckpoint(filepath,monitor='loss',verbose=0)
h = model.fit(X, y,batch_size=128,epochs=100,verbose=2,callbacks =[ck])
加载
path = 'saver/weights.146-1.11.hdf5'
model.load_weights(path)
2.可视化这些文件名中的损失值
由于rnn可能要训练很多批次才有效果,会产生很多中间文件,文件名中有loss值,这个值就可以用来画出图。
import os
import matplotlib.pyplot as plt
%matplotlib inline
filenames = os.listdir('saver')
gettime = os.path.getmtime#获取时间函数
ft = {f:gettime('saver/'+f) for f in filenames}
ss = sorted(ft.items(),key = lambda item:item[1])#按照值排序
#匿名函数中item是参数,item[1]是返回参数
losses = [float(s[0][-9:-5]) for s in ss]#从文件名中截取损失值
x = [i for i in range(len(losses))]
plt.plot(x,losses)