首页 > 解决方案 > 什么是 tensorflow.matmul?

问题描述

从 print 的输出来看,它是函数。但是根据官方文档

Operation 是 TensorFlow Graph 中的一个节点,它以零个或多个 Tensor 对象作为输入,并产生零个或多个 Tensor 对象作为输出。通过调用 Python op 构造函数(例如 tf.matmul)或 tf.Graph.create_op 来创建 Operation 类型的对象。

它是一个构造函数。所以我认为这是一个类名。但是,打印 tf.matmul 的返回值表明它是一个张量,而不是“操作类型的对象”。Tensor 类是继承自 Operation 类吗?我试图在 tensorflow 源代码中找到 tf.matmul 的定义,但找不到。

标签: tensorflowtensoroperation

解决方案


tf.matmul(或tf.linalg.matmul)是一个函数。math_ops您可以在模块中找到它的定义。这些函数的行为取决于您是使用急切执行(2.x 中的默认值)还是图形模式(1.x 中的默认值)。

通过急切执行,该函数接收几个急切张量(具有实际值的张量,而不是“符号”)并运行它们的矩阵乘积的计算。你得到的是另一个包含结果的热切张量。

在图形模式下,该函数不运行任何计算。它只接收两个符号张量(其值将在稍后确定),将矩阵生产操作添加到当前图形并为您提供其结果的符号张量。在任何情况下,张量都不会从操作中继承。该图包含作为操作的节点,这些节点通常具有张量的输入和/或输出。在图形模式下,类似的函数tf.linalg.matmul通常会为您提供结果张量,而不是操作,因为它更方便(您很少需要访问操作本身)。当你给这些函数name='MyMatMul'命名时:(例如MyMatMul:0)。当你有一个张量t时,你可以访问产生它的操作t.op。当您有一个操作时,您可以使用和op访问该操作的输入和输出张量,以及它的类型(它表示的操作类型,如)。这些属性不能通过急切的执行来访问,因为它们只有在你有图表时才有意义。op.inputsop.outputsMatMulop.type


推荐阅读