keras 使用tensorboard记录训练日志与结果

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")   

猜你喜欢

转载自blog.csdn.net/u011489887/article/details/84996020