1.每个epoch结束记录
只需要在fit的时候加上callbacks=[TensorBoard(log_dir='./tmp/log')] 这一句就可以将运行的结果记录下来了。
2.自定义每个batch记录损失函数
class Mylosscallback(Callback):
def __init__(self, log_dir):
super(Callback, self).__init__()
self.val_writer = tf.summary.FileWriter(log_dir)
self.num=0
def on_train_begin(self, logs={}):
self.losses = []
def on_batch_end(self, batch, logs={}):
self.num=self.num+1
val_loss=logs.get('loss')
# print(1111)
val_loss_summary = tf.Summary()
val_loss_summary_value = val_loss_summary.value.add()
val_loss_summary_value.simple_value = val_loss
val_loss_summary_value.tag = 'loss'
self.val_writer.add_summary(val_loss_summary, self.num)
self.val_writer.flush()
callbacks=[Mylosscallback(log_dir='./tmp/log')]
3.更加科学的保存模型
filepath = 'model-ep{epoch:03d}-loss{loss:.3f}-val_loss{val_loss:.3f}.h5'
checkpoint = ModelCheckpoint(filepath, monitor='val_loss', verbose=1, save_best_only=True, mode='min')
这样设置会生成多个h5文件,若filepath='mymodel.h5'则只会生成一个文件,同时save_best_only打开之后,如果val_loss 提高了就会保存,没有提高就不会保存。
4.keras模型包括model和weight两个部分
保存model方法一 JSON文件:
model_json = model.to_json()
with open("model.json", "w") as json_file:
json_file.write(model_json)
保存model方法二 Yaml文件:
yaml_string = model.to_yaml()
保存weight方法一 h5文件:
model.save_weights("modelweight.h5")
同时保存model和weight
model.save('model.h5')
加载model:
#json model load
json_file = open('model.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
#h5 model load
from keras.models import load_model
model = load_model('model.h5')
#weight load
loaded_model.load_weights("model.h5")