我对Numpy函数点的命名感到有点困惑:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.dot.html
似乎这是Numpy用于执行矩阵乘法的内容。然而,“点积”是不同的,它从两个向量产生单个标量:https://en.wikipedia.org/wiki/Dot_product
有人可以解决“dot”一词的这两种用法吗?
答案 0 :(得分:3)
A⋅B
这个名字几乎可以肯定来自这个符号。实际上有一个专门的代码点,它名为DOT OPERATOR
,位于"数学运算符" unicode块:chr(0x22c5)
。评论中提到这是
...用于乘法的表示
现在,关于这个评论:
然而," dot产品"是不同的东西,它从两个向量产生单个标量
他们并非完全不相关!在2-d矩阵乘法A⋅B中,结果中位置(i,j)
处的元素来自 row i 的点积列j 。
答案 1 :(得分:1)
与线性代数相比,“点”或“内”产品在张量代数中具有扩展的定义。
对于n
和m
维度张量N
和M
,N⋅M
将具有维度(n + m - 2)
,作为“内部维度”(乘法后将N
的最后一个维度和M
的第一维度相加。
(另外,N.dot(M)
实际上总结了N
的最后一个维度和M
的倒数第二维度,因为...原因。实际张量代数“点产品“功能降级为np.tensordot
)
对于n = m = 1
(即两者都是1-d张量或“向量”),输出是0-d张量或“标量”,这相当于“标量”或“点” “来自线性代数的产品。
对于n = m = 2
(即两者都是2-d张量或“矩阵”),输出是2-d张量或“矩阵”,并且该操作与“矩阵乘法”等效。
对于n = 2, m = 1
,输出是1d张量或“向量”,这被称为(至少是我的教授)“映射”。
请注意,由于尺寸的顺序与内部产品的构造相关,
N.dot(M) == M.dot(N)
除非True
,否则通常不会n = m = 1
- 即仅在标量产品的情况下。