Tensorflow中高维矩阵的乘法运算tf.matmul(tf.linalg.matmul)详悉

1.问题由来

在tensorflow框架下,经常会用到矩阵的乘法运算,特别是高(多)维的矩阵运算,在这些矩阵运算时,经常使用到其中的tf.matmul或tf.linalg.matmul等函数。但高维矩阵在内部怎么运算的?其内部的参数是怎么实现的在tensorflow给出的介绍仍然存在表达不明的问题,所以在此作进一步的阐释。

声明:本博客里的数组乘法运算是指矩阵乘法运算 ,不是对应元素相乘。所述高维代表矩阵的维度3维。

2.高维矩阵的乘法运算规则

2.1 运算条件

两矩阵的维数相同:

个维度都一致:

最后两个维度满足矩阵乘法运算:

具体地,假设,则 能运算的条件如下图(箭头表示相等):

2.2 使用tf.matmul(tf.linalg.matmul)时存在的问题

按照上文的规则使用tf.matmul(tf.linalg.matmul)时,又会存在各种问题。以tf.linalg.matmul为例,其关键参数设置如下,表征2个高维矩阵,transpose_a和transpose_b可以理解为分别对这2个矩阵的转置操作。我们假设都是4维矩阵,并设维度分别为。tensorflow中,第1维一般是batchsize。那么,tf.linalg.matmul(a,b,transpose_b=True)是不是对矩阵的真正转置呢?即tf.linalg.matmul(a,b,transpose_b=True)是维度维的矩阵与维度为的矩阵直接的矩阵运算呢?

python 复制代码
tf.linalg.matmul(
    a,
    b,
    transpose_a=False,
    transpose_b=False,
    adjoint_a=False,
    adjoint_b=False,
    a_is_sparse=False,
    b_is_sparse=False,
    output_type=None,
    grad_a=False,
    grad_b=False,
    name=None
)

如果我们直接看tensorflow给出的解释如下

直观的理解确实如前文所述,其实不然。

这里的transpose_a / transpose_b=True并不是执行传统数学意义上的转置操作,而是仅对高维矩阵上的最后两个维度的转置,其它维度仍保持不变。这是通过调用tf.linalg.matrix_transpose实现的。具体如下

python 复制代码
tf.linalg.matrix_transpose(
    a, name='matrix_transpose', conjugate=False
)

tensorflow文档中对其的描述如下,即转置矩阵的最后2个维度。

python 复制代码
Transposes last two dimensions of tensor a.

至于后续的运算可以在相关文档中查阅得到。

参考文档

tensorflow中高维数组乘法运算_高位矩阵乘法 tensorflow-CSDN博客

TensorFlow中矩阵乘操作tf.matmul(或tf.linalg.matmul)和矩阵元素乘tf.multiply(或tf.math.multiply)用法对比-CSDN博客

相关推荐
小辉同志1 天前
74. 搜索二维矩阵
c++·leetcode·矩阵·二分查找
战族狼魂2 天前
40x40 矩阵控制系统
jvm·oracle·矩阵
一只小小的土拨鼠2 天前
【国奖冲刺/全网首发】2026年第十四届“泰迪杯”A、B、C题完整解题思路、代码与高质量论文大合集
c语言·矩阵·数据挖掘
普中科技3 天前
【普中 51-Ai8051 开发攻略】-- 第 10 章 矩阵按键实验
单片机·嵌入式硬件·矩阵·开发板·普中科技·ai8051u·aicube
歪歪歪比巴卜3 天前
2026年AI新媒体运营工具怎么选?核心功能与适用场景解析
大数据·矩阵·新媒体运营
山海AI手册3 天前
028、边缘AI与嵌入式部署:TensorFlow Lite/PyTorch Mobile实战手记
人工智能·pytorch·tensorflow
m0_743106463 天前
【3D硬核】四元数(Quaternions)与旋转矩阵(Rotation)——三维空间中的旋转
人工智能·计算机视觉·3d·矩阵·几何学
别或许3 天前
线代中为什么左乘一个列满秩矩阵,不改变矩阵的秩?
人工智能·算法·矩阵
wfbcg3 天前
每日算法练习:LeetCode 54. 螺旋矩阵 ✅
算法·leetcode·矩阵
_日拱一卒3 天前
LeetCode:240搜索二维矩阵Ⅱ
数据结构·线性代数·leetcode·矩阵