您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何理解TensorFlow中的术语``张量''?

如何理解TensorFlow中的术语``张量''?

TensorFlow没有一流的Tensor对象,这意味着Tensor在运行时执行的基础图中没有任何概念。相反,该图由相互连接的op节点组成,代表操作。操作分配内存的输出,这些都可以在端点上:0:1等等,你可以认为这些端点作为的Tensor。如果具有tensor,则nodename:0可以将其值提取sess.run(tensor)sess.run('nodename:0')。执行粒度发生在操作级别,因此该run方法将执行op,该op将计算所有端点,而不仅仅是:0端点。可能有一个没有输出的Op节点(例如tf.group),则没有张量与其关联。没有底层Op节点就不可能有张量。

您可以通过执行以下操作来检查基础图中发生了什么

tf.reset_default_graph()
value = tf.constant(1)
print(tf.get_default_graph().as_graph_def())

因此,tf.constant有了一个操作节点,您可以使用sess.run("Const:0")获取sess.run(value)

同样,value=tf.placeholder(tf.int32)创建一个具有name的常规节点Placeholder,您可以将其作为Feed_dict={"Placeholder:0":2}或馈入Feed_dict={value:2}。您不能在同一session.run调用中提供和获取占位符,但是可以通过tf.identity在顶部附加节点并获取该结果来查看结果。

对于变量

tf.reset_default_graph()
value = tf.Variable(tf.ones_initializer()(()))
value2 = value+3
print(tf.get_default_graph().as_graph_def())

你会看到,它创建两个节点VariableVariable/read,该:0点要在这两个节点获取一个有效的值。但是Variable:0具有特殊ref类型,这意味着它可以用作变异操作的输入。Python调用的结果tf.Variable一个PythonVariable对象,并且有一些Python魔术可以替代Variable/read:0Variable:0取决于是否需要进行突变。由于大多数操作只有1个端点,:0因此将其删除。另一个例子是Queue-close()方法将创建一个新的Closeop节点,该节点连接到Queueop。总而言之- 根据用途对python对象进行操作VariableQueue映射到不同的基础TensorFlow op节点。

对于诸如此类tf.splittf.nn.top_k创建具有多个端点的节点的操作,Python的session.run调用自动输出包装在tuple或可单独获取collections.namedtupleTensor对象中。

其他 2022/1/1 18:35:32 有402人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶