tensorflow - 什么是 tensorflow.matmul?
问题描述
从 print 的输出来看,它是函数。但是根据官方文档:
Operation 是 TensorFlow Graph 中的一个节点,它以零个或多个 Tensor 对象作为输入,并产生零个或多个 Tensor 对象作为输出。通过调用 Python op 构造函数(例如 tf.matmul)或 tf.Graph.create_op 来创建 Operation 类型的对象。
它是一个构造函数。所以我认为这是一个类名。但是,打印 tf.matmul 的返回值表明它是一个张量,而不是“操作类型的对象”。Tensor 类是继承自 Operation 类吗?我试图在 tensorflow 源代码中找到 tf.matmul 的定义,但找不到。
解决方案
tf.matmul
(或tf.linalg.matmul
)是一个函数。math_ops
您可以在模块中找到它的定义。这些函数的行为取决于您是使用急切执行(2.x 中的默认值)还是图形模式(1.x 中的默认值)。
通过急切执行,该函数接收几个急切张量(具有实际值的张量,而不是“符号”)并运行它们的矩阵乘积的计算。你得到的是另一个包含结果的热切张量。
在图形模式下,该函数不运行任何计算。它只接收两个符号张量(其值将在稍后确定),将矩阵生产操作添加到当前图形并为您提供其结果的符号张量。在任何情况下,张量都不会从操作中继承。该图包含作为操作的节点,这些节点通常具有张量的输入和/或输出。在图形模式下,类似的函数tf.linalg.matmul
通常会为您提供结果张量,而不是操作,因为它更方便(您很少需要访问操作本身)。当你给这些函数name='MyMatMul'
命名时:
(例如MyMatMul:0
)。当你有一个张量t
时,你可以访问产生它的操作t.op
。当您有一个操作时,您可以使用和op
访问该操作的输入和输出张量,以及它的类型(它表示的操作类型,如)。这些属性不能通过急切的执行来访问,因为它们只有在你有图表时才有意义。op.inputs
op.outputs
MatMul
op.type
推荐阅读
- arrays - 根据employeeid设置标题
- c++ - C++ 最佳实践:在多个 .cpp 文件中编写类方法的定义
- node.js - NTLM TLS 1.2 身份验证 Node.js
- java - SpringBoot 中 application.properties 中的 @Value 始终为 null
- html - 如何使用 Angular 6 向表格添加附加功能
- r - 是否有一个包/函数在 R 中喂给美国州时返回时区
- c - OpenMP 可能无法直接并行化的代码
- android-studio - 我的默认活动发生了什么?
- android - 无法在 couchbase lite(版本 2.0.2)android 中删除整个数据库
- c - 双向链表:删除给定键的所有出现