gpt4 book ai didi

tensorflow - tf 如何从同一个变量中恢复两个变量

转载 作者:行者123 更新时间:2023-12-03 09:36:43 24 4
gpt4 key购买 nike

我已经保存了一个模型,现在我试图在两个分支中恢复它,如下所示:

enter image description here

我写了这段代码,它引发了 ValueError: The same saveable will be restored with two names .
如何从同一个变量中恢复两个变量?

restore_variables = {}
for varr in tf.global_variables()
if varr.op.name in checkpoint_variables:
restore_variables[varr.op.name.split("_red")[0]] = varr
restore_variables[varr.op.name.split("_blue")[0]] = varr
init_saver = tf.train.Saver(restore_variables, max_to_keep=0)

最佳答案

在 TF 1.15 上测试

基本上错误是说它在 restore_variables 中找到对同一变量的多个引用。字典。修复很简单。使用 tf.Variable(varr) 创建变量的副本以下是其中一项引用资料。

我认为可以安全地假设您在这里不是在寻找对同一变量的多个引用,而是在寻找两个单独的变量。 (我这样假设是因为,如果您想多次使用同一个变量,您可以多次使用单个变量)。

with tf.Session() as sess:
saver.restore(sess, './vars/vars.ckpt-0')
restore_variables = {}
checkpoint_variables=['b']
for varr in tf.global_variables():
if varr.op.name in checkpoint_variables:
restore_variables[varr.op.name.split("_red")[0]] = varr
restore_variables[varr.op.name.split("_blue")[0]] = tf.Variable(varr)
print(restore_variables)
init_saver = tf.train.Saver(restore_variables, max_to_keep=0)

您可以在下面找到使用玩具示例复制问题的完整代码。本质上,我们有两个变量 ab因此,我们正在创建 b_redb_blue变量。
# Saving the variables

import tensorflow as tf
import numpy as np
a = tf.placeholder(shape=[None, 3], dtype=tf.float64)
w1 = tf.Variable(np.random.normal(size=[3,2]), name='a')
out = tf.matmul(a, w1)
w2 = tf.Variable(np.random.normal(size=[2,3]), name='b')
out = tf.matmul(out, w2)

saver = tf.train.Saver([w1, w2])

with tf.Session() as sess:
tf.global_variables_initializer().run()
saved_path = saver.save(sess, './vars/vars.ckpt', global_step=0)
# Restoring the variables

with tf.Session() as sess:
saver.restore(sess, './vars/vars.ckpt-0')
restore_variables = {}
checkpoint_variables=['b']
for varr in tf.global_variables():
if varr.op.name in checkpoint_variables:
restore_variables[varr.op.name+"_red"] = varr
# Fixing the issue: Instead of varr, do tf.Variable(varr)
restore_variables[varr.op.name+"_blue"] = varr
print(restore_variables)
init_saver = tf.train.Saver(restore_variables, max_to_keep=0)

关于tensorflow - tf 如何从同一个变量中恢复两个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60180695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com