gpt4 book ai didi

tensorflow - 在 tensorflow 中检索未命名的变量

转载 作者:行者123 更新时间:2023-12-02 06:50:59 25 4
gpt4 key购买 nike

我训练了一个模型并将其保存在检查点中,但我才意识到我忘记命名我在恢复模型时要检查的变量之一。

我知道如何从 tensorflow 中检索命名变量,(g = tf.get_default_graph() 然后是 g.get_tensor_by_name([name]))。在这种情况下,我知道它的范围,但它是未命名的。我试过查看 tf.GraphKeys.GLOBAL_VARIABLES,但出于某种原因,它没有出现在那里。

这是它在模型中的定义方式:

with tf.name_scope("contrastive_loss") as scope:
l2_dist = tf.cast(tf.sqrt(1e-4 + tf.reduce_sum(tf.subtract(pred_left, pred_right), 1)), tf.float32) # the variable I want

# I use it here when calculating another named tensor, if that helps.
con_loss = contrastive_loss(l2_dist)
loss = tf.reduce_sum(con_loss, name="loss")

有没有办法找到没有名字的变量?

最佳答案

首先,根据我的第一条评论,tf.get_collection 是有道理的给定的名称范围不起作用。来自 the documentation ,如果您提供范围,则只会返回具有指定名称的变量或操作。这样就结束了。

您可以尝试的一件事是列出您的 Graph 中每个节点的名称。与:

print([node.name for node in tf.get_default_graph().as_graph_def().node])

或者可能,当从检查点恢复时:

saver = tf.train.import_meta_graph(/path/to/meta/graph)
sess = tf.Session()
saver.restore(sess, /path/to/checkpoints)
graph = sess.graph
print([node.name for node in graph.as_graph_def().node])

另一种选择是使用 tensorboard 或 Jupyter Notebook 和 show_graph 显示图表。命令。现在可能有一个内置的 show_graph,但该链接指向定义了一个的 git 存储库。然后,您将不得不在图中搜索您的操作,然后可能会通过以下方式检索它:

my_op = tf.get_collection('full_operation_name')[0]

如果你想在未来设置它以便你可以通过名称检索它,你需要使用 tf.add_to_collection 将它添加到一个集合中。 :

my_op = tf.some_operation(stuff, name='my_op')
tf.add_to_collection('my_op_name', my_op)

然后通过恢复你的图来检索它,然后使用:

my_restored_op = tf.get_collection('my_op_name')[0]

您也可以通过命名它然后在 tf.get_collection 中指定其范围来获取,但我不确定。可以找到更多信息和有用的教程 here .

关于tensorflow - 在 tensorflow 中检索未命名的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44639260/

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