python tensorflow学习(五)tensorflow模型的保存与恢复

本文详细介绍了TensorFlow模型的保存与恢复,包括简单的保存恢复方法和如何对特定权重进行恢复处理。通过Saver类的save和restore方法,以及使用variable_scope进行命名,可以实现模型的完整或部分恢复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tensorflow模型的保存与恢复

今天不想学习,缓一缓呀,上一章用到了tensorflow模型的保存,今天详细的再学一学。
大纲

  • 简单的保存与恢复

  • 更为细化的保存与恢复方法

简单的保存与恢复

Saver是tensorflow中的保存类,其常用方法为saverestore 分别用于模型的保存和恢复。
一般的保存方式为:

save_path = "..."  # 自行填入保存地址
saver = tf.train.Saver()
Sess = tf.Session()
...
# 模型定义
...
saver.save(sess, save_path)

结果会有如下几个文件:
在这里插入图片描述
其中,
checkpoint为检查点文件,记录存储文件的名称
.ckpt.index存储权重目录
.ckpt.meta存储整个数据流图
.ckpt.data存储所有权重
同时,也可以多次通过设置global_step多次保存模型:

for i in range(100):
   saver.save(sess, save_path, global_step=i)

但是为了防止占据太多空间,tensorflow仅仅会保存最近的5个模型文件,删除其他模型。
模型的恢复也很简单:

save_path = "..."
saver = tf.train.Saver()
sess = tf.Session()
...
# 模型定义
...
saver.restore(sess, save_path)

更为细化的模型保存与恢复

当进行整个模型的存储和恢复时,上述方法已经够用,但需要对特定的权重进行恢复和处理时,首先需要为每个变量进行命名:

with tf.variable_scope("var"):
   a = tf.Variable(tf.random_normal([1]), name="a_val")
x = tf.placeholder(tf.float32, name="x_placeholder")
print(a)
print(x)

其中==tf.variable_scope(“var”)==的作用是定义一个命名域
输出a和x:

<tf.Variable 'var/a_val:0' shape=(1,) dtype=float32_ref>
Tensor("x_placeholder:0", dtype=float32)

可以发现a的名字为== ‘var/a_val:0’==,var为其命名空间,0是为了进行参数的复用而使用的符号。
然后就可以恢复并处理特定的值啦:

saver = tf.train.import_meta_graph('./model/AlexNetModel.ckpt.meta')
graph = tf.get_default_graph()
a = graph.get_tensor_by_name('var/a_val:0')
x = graph.get_tensor_by_name('x_placeholder:0')
print(a)
print(x)

输出:

<tf.Variable 'var/a_val:0' shape=(1,) dtype=float32_ref>
Tensor("x_placeholder:0", dtype=float32)

为了得到其值,则需要在对话中完成:

saver = tf.train.import_meta_graph('./model/AlexNetModel.ckpt.meta')
graph = tf.get_default_graph()
a = graph.get_tensor_by_name('var/a_val:0')

with tf.Session() as sess:
  saver.restore(sess, './model/AlexNetModel.ckpt')  # 恢复权重
  result = sess.run(a)
  print(result)

今天划了一天,明天一定好好学习!
8说了,好久没打游戏了,晚上回去爽一爽嘻嘻。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值