gpt4 book ai didi

python-3.x - 如何从不同函数构建的图表中在 tensorflow 中使用 get_operation_by_name() ?

转载 作者:行者123 更新时间:2023-12-02 20:44:18 25 4
gpt4 key购买 nike

我想在单独的函数get_graph()中构建一个 tensorflow 图,并在主函数中打印出一个简单的操作a。事实证明,如果我从 get_graph() 返回 a,我就可以打印出 a 的值。但是,如果我使用 get_operation_by_name() 检索 a,它会打印出 None。我想知道我在这里做错了什么?有什么建议来修复它吗?谢谢你!

import tensorflow as tf

def get_graph():
graph = tf.Graph()
with graph.as_default():
a = tf.constant(5.0, name='a')
return graph, a

if __name__ == '__main__':
graph, a = get_graph()
with tf.Session(graph=graph) as sess:
print(sess.run(a))
a = sess.graph.get_operation_by_name('a')
print(sess.run(a))

打印出来

5.0
None

附:我正在使用 python 3.4 和tensorflow 1.2。

最佳答案

tensorflow 中的命名约定很微妙,一开始有点偏移。

问题是,当你写作时

a = tf.constant(5.0, name='a')

a 不是常量操作,而是它的输出Names of op outputs derive from the op name by adding a number corresponding to its rank 。这里,constant 只有一个输出,所以它的名字是

print(a.name)
# `a:0`

当您运行sess.graph.get_operation_by_name('a')时,您确实获得了constant操作。但您真正想要的是获取 'a:0',即此操作的输出张量,其计算返回一个数组。

a = sess.graph.get_tensor_by_name('a:0')
print(sess.run(a))
# 5

关于python-3.x - 如何从不同函数构建的图表中在 tensorflow 中使用 get_operation_by_name() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45043150/

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