首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TensorFlow -如果存在,则恢复

TensorFlow -如果存在,则恢复
EN

Stack Overflow用户
提问于 2017-12-28 02:49:17
回答 1查看 834关注 0票数 3

是否可以仅在变量存在的情况下恢复该变量?最常用的方式是什么?

例如,考虑下面的最小示例:

代码语言:javascript
运行
复制
import tensorflow as tf
import glob
import sys
import os

with tf.variable_scope('volatile'):
    x = tf.get_variable('x', initializer=0)

with tf.variable_scope('persistent'):
    y = tf.get_variable('y', initializer=0)
    add1 = tf.assign_add(y, 1)

saver = tf.train.Saver(tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, 'persistent'))

sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
tf.get_default_graph().finalize()

print('save file', sys.argv[1])
if glob.glob(sys.argv[1] + '*'):    
    saver.restore(sess, sys.argv[1])

print(sess.run(y))
sess.run(add1)
print(sess.run(y))
saver.save(sess, sys.argv[1])

当使用相同的参数运行两次时,程序会按照预期先打印0\n1,然后再打印1\n2。现在假设您通过在persistent作用域中的add1之后添加一个z = tf.get_variable('z', initializer=0)来更新代码,使其具有新功能。如果存在旧的保存文件,则再次运行此命令将中断,并显示以下错误:

代码语言:javascript
运行
复制
NotFoundError (see above for traceback): Key persistent/z not found in checkpoint
     [[Node: save/RestoreV2_1 = RestoreV2[dtypes=[DT_INT32],
         _device="/job:localhost/replica:0/task:0/device:CPU:0"](_arg_save/Const_0_0,
                                                                 save/RestoreV2_1/tensor_names,
                                                                 save/RestoreV2_1/shape_and_slices)]]
     [[Node: save/Assign_1/_18 = _Recv[client_terminated=false,
         recv_device="/job:localhost/replica:0/task:0/device:GPU:0",
         send_device="/job:localhost/replica:0/task:0/device:CPU:0",
         send_device_incarnation=1,
         tensor_name="edge_12_save/Assign_1",
         tensor_type=DT_FLOAT,
         _device="/job:localhost/replica:0/task:0/device:GPU:0"]()]]
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47997203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档