【发布时间】:2019-07-04 07:09:03
【问题描述】:
我目前正在尝试使用 numpy 为向量创建一个张量点。例如,假设我有以下变量:
a = [np.array([1, 2]), np.array([3,4])]
b = [np.array([5,6]), np.array([7,8])]
我想计算“向量的张量积”,即 [a[0]*b[0], a[0]*b[1], a[1]*b[0], a [1]*b[1]] 这将在我们的示例中给出:
a x b = [[5,12], [7,16], [15, 24], [21, 32]]
我已经尝试了许多沿不同轴使用 tensordot 的组合,但它从来没有给我想要的结果 :((
例如,我尝试了以下方法:
np.tensordot(a,b)
这给了我array(70)
或np.tensordot(a,b, axes = 0)
这给了我
array([[[[ 5, 6],
[ 7, 8]],
[[10, 12],
[14, 16]]],
[[[15, 18],
[21, 24]],
[[20, 24],
[28, 32]]]])
我还尝试使用不同的轴,例如 np.tensordot(a,b, axes = ([0], [1])),但没有成功...
有人可以帮帮我吗? :) 我确定这很微不足道,但我似乎错过了一些东西
谢谢。
【问题讨论】:
-
向我们展示其中的一些
tensordot应用程序,以及问题所在。 -
我试图解释
tensordot结果。但是是什么让您认为tensordot应该给您想要的结果? -
另一种方式来提出我的问题 -
a tensordot是什么?我知道这个numpy函数。但听起来你正在尝试生产一种在其他地方定义的产品(数学理论?)。如果有,在哪里? -
非常感谢您在下面的回答,这正是我想要的!
-
至于我的目标,我在张量空间中通过它们在所有 x 处的值来定义 f 和 g 两个函数,即 [f(x_1), f(x_2), ... , f(x_n)] 其中 x_1, ..., x_n 是 f 和 g 的有限定义集。然后可以将我定义的乘积视为函数 h 的值的扁平向量,定义为函数 f x g 的张量积