Environment
- Tensorflow2.0.0
- python3.6
问题描述
每轮训练中以特定方式(固定频率、最高准确率或最低loss等)存储模型,停止训练后,基于已存储的模型进行二次训练。
以特定方式保存模型
callbacks = [
tf.keras.callbacks.ModelCheckpoint(filepath=save_args['./saved_models/model_epoch{epoch}.h5'],
# save_freq=save_args['2'],
# save_weights_only=True,
#monitor='val_accuracy',
#mode='max',
#save_best_only=True
),
tf.keras.callbacks.TensorBoard(log_dir="./logs/callback_test", update_freq='batch')]
- save_freq=save_args['2']
- 每2 epoches保存一次
- monitor='val_accuracy',
mode='max',
save_best_only=True- 无论多少epoch,只保存val_accuracy最大的一次
加载模型保存好的模型
# 重新创建完全相同的模型,包括其权重和优化程序
self.model = tf.keras.models.load_model('./saved_models/callback_test/model_epoch1.h5')
# 显示网络结构
self.model.summary()
存储最后一轮epoch模型
#sava the model as pb/h5
#self.model.save(save_args['pb_save_path']+'/1120202001.h5')
#tf.saved_model.save(self.model, save_args['pb_save_path'])
完整代码
import os
import numpy as np
import tensorflow as tf
import random
import yaml
import warnings
warnings.filterwarnings('ignore')
class Trainer:
def __init__(self, config_path, config_load_mode=