You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow1.12变量赋值后保存再加载值未更新问题

TensorFlow 1.x 变量赋值后保存再加载值异常问题解答

问题原因

  • 你在恢复模型参数的逻辑中,先调用saver.restore()加载了 checkpoint 中存储的修改后变量值3,随后又执行了sess.run(tf.global_variables_initializer())。
  • 全局初始化操作会将图中所有变量重置为定义时指定的初始值(即定义w时设置的2),直接覆盖了刚刚恢复的正确值,最终导致加载得到的是初始值而非修改后的值。

解决方法

删除模型恢复流程中多余的sess.run(tf.global_variables_initializer())语句即可。saver.restore()操作已经完成了变量的赋值,不需要再做全局初始化。

修改后的参考代码(仅展示加载部分)

model_path = "./test_1.meta"
g = tf.Graph()
with g.as_default():
    sess = tf.Session(graph=g)
    saver = tf.train.import_meta_graph(model_path, clear_devices=True)
    saver.restore(sess, model_path.replace('.meta', ''))
    # 移除了多余的全局变量初始化调用
    gb = tf.global_variables()
    print(gb)

    w = gb[0]
    y = sess.run(w)
    print('loaded value', y)

修改后运行输出将为('loaded value', 3),符合预期。

扩展说明

如果你的场景中同时存在需要从 checkpoint 恢复的旧变量,和自己新增的不需要恢复的新变量,不要调用全局初始化,改为使用tf.variables_initializer(需要初始化的变量列表)仅对新增变量做初始化即可,避免覆盖恢复的变量值。

内容的提问来源于stack exchange,提问作者Ryan Halabi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 13:45:03