Tensorflow中图形中的张量名称列表
python
tensorflow
5
0

Tensorflow中的图形对象具有一种称为“ get_tensor_by_name(name)”的方法。反正有没有得到有效张量名称的列表?

如果不是,那么有人从这里知道预训练模型inception-v3的有效名称吗?从他们的示例pool_3开始,它是一个有效的张量,但是所有这些列表都很好。我看了一下所提到的文件 ,其中一些层似乎与表1中的大小相对应,但并非全部。

参考资料:
Stack Overflow
收藏
评论
共 5 个回答
高赞 时间 活跃

您甚至不必创建会话即可查看图中的所有操作名称。为此,您只需要获取一个默认图形tf.get_default_graph()并提取所有操作: .get_operations 。每个操作都有许多字段 ,您需要的是名称。

这是代码:

import tensorflow as tf
a = tf.Variable(5)
b = tf.Variable(6)
c = tf.Variable(7)
d = (a + b) * c

for i in tf.get_default_graph().get_operations():
    print i.name
收藏
评论

本文没有准确反映模型。如果您从arxiv下载源代码,则该源代码具有正确的模型描述为model.txt,并且其中的名称与发布的模型中的名称密切相关。

为了回答您的第一个问题, sess.graph.get_operations()提供了一系列操作。对于op, op.name为您提供名称,而op.values()为您提供其生成的张量的列表(在inception-v3模型中,所有张量名称均为op.values()为“:0”的op名称,所以pool_3:0是最终合并操作产生的张量。)

收藏
评论

作为嵌套列表理解:

tensor_names = [t.name for op in tf.get_default_graph().get_operations() for t in op.values()]

获取图形中的张量名称的函数(默认为默认图形):

def get_names(graph=tf.get_default_graph()):
    return [t.name for op in graph.get_operations() for t in op.values()]

在图形中获取张量的函数(默认为默认图形):

def get_tensors(graph=tf.get_default_graph()):
    return [t for op in graph.get_operations() for t in op.values()]
收藏
评论

以上答案是正确的。我遇到了上面任务的简单易懂的代码。所以在这里分享它:

import tensorflow as tf

def printTensors(pb_file):

    # read pb into graph_def
    with tf.gfile.GFile(pb_file, "rb") as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())

    # import graph_def
    with tf.Graph().as_default() as graph:
        tf.import_graph_def(graph_def)

    # print operations
    for op in graph.get_operations():
        print(op.name)


printTensors("path-to-my-pbfile.pb")
收藏
评论

要查看图中的操作(您会看到很多,因此为了简短起见,我在这里只给出了第一个字符串)。

sess = tf.Session()
op = sess.graph.get_operations()
[m.values() for m in op][1]

out:
(<tf.Tensor 'conv1/weights:0' shape=(4, 4, 3, 32) dtype=float32_ref>,)
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号