模型的存储与加载

tensorflow:
有两种方式存储和加载模型。
①生成checkpoint file,扩展名为.ckpt,通过在tf.train.Saver对象上调用Saver.save()生成。包含权重和变量,但不包括图的结构。如果需要在另一个程序中使用,需要重新创建图形结构,并告诉Tesorflow如何处理这些权重。
模型存储:

# 保存变量,位于tf.train.Saver()后的变量将不会被存储
saver = tf.train.Saver()
# ....
# 存储模型, global_step是计数器,为训练轮数计数
# 更新计数器
global_step.assign(i).eval()
# 加载所有参数
saver.save(sess, ckpt_dir = "/model.ckpt", global_step = global_step)

加载模型:
使用saver.restore进行模型加载。

ckpt = tf.train.get_checkpoint_state(ckpt_dir)
if ckpt and ckpt.model_checkpoint_path:
    saver.restore(sess, ckpt.model_checkpoint_path)

②生成图协议文件(graph proto file),二进制文件,.pb,用tf.train.write_graph()保存。只包含图形结构,不包含权重,然后使用tf.import_graph_def()来加载图形。

# 当仅保存图模型时,才将图写入二进制协议文件中
v = tf.Variable(0, name = 'my_variable')
sess = tf.Session()
tf.train.write_grapg(sess.graph_def, '/tmp/tfmodel', 'train.pbtxt')
# 当读取时,又从协议文件中读取出来
with tf.Session() as _sess:
    with gfile.FastGFile("/tmp/tfmodel/train.pbtxt", 'rb') as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())
        _sess.graph.as_default()
        tf.import_graph_def(graph_def, name = 'tfgraph')

keras:
keras的_model和load_model方法可以将keras模型和权重保存在一个hdf5文件中,这里面包括模型的结构,权重,训练的配置(损失函数,优化器)等。如果训练因为某个原因终中止,就用这个hdf5文件从上次训练的地方重新开始训练。
模型的加载和保存:
①模型的结构和权重都保存

from keras.models import save_model, load_model
# 创建一个HDF5文件
_, frame = tempfile.mkstemp('.h5')
save_model(model, fname)
new_model = load_model(fname)

os.remove(fname)

②只保存模型的结构,不保存其权重及训练的配置(损失函数,优化器)
保存时可将模型序列化为json或者yaml文件:

json_string = model.to_json()
yaml_string = model.to_yaml()

保存完成后,可用如下语句加载:

from keras.models import model_from_json
model = model_from_json(json_string)
model = model_from_yaml(yaml_string)

③仅保存模型的权重,不包含网络的结构

model.save_weights('my_model_weights.h5')
mode.load_weights('my_model_weights.h5')

推荐:https://blog.csdn.net/FontThrone/article/details/76675684

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值