gpt4 book ai didi

python - 在不执行求和的情况下在 python numpy 中获取张量积

转载 作者:行者123 更新时间:2023-11-28 21:53:46 27 4
gpt4 key购买 nike

我有两个张量,每个都是二维的,有一个共同的长轴(例如 20.000)和不同的短轴,例如一个 9 另一个 10)。我想得到一个 9X10X20000 张量,这样对于长轴上的每个位置,其他两个轴都是张量积。明确地说,对于这里的“长”轴 4,我想做的是:

A = np.arange(8).reshape(2,4)
B = np.arange(12).reshape(3,4)
C = np.zeros(2,3,4)
for i in range(2):
for j in range(3):
for k in range(4):
C[i,j,k] = A[i,k]*B[j,k]

此代码有效,但我想知道:是否有一种 numpy 方法可以做到这一点,而无需运行 for 循环?

上下文用于训练神经网络,长轴是训练示例。在计算成本函数的梯度时,我得到了这种形式的公式。干杯,狮子座

最佳答案

我倾向于使用 np.einsum对于这些问题,这使得根据索引指定应该发生什么变得容易:

>>> A = np.arange(8).reshape(2,4)
>>> B = np.arange(12).reshape(3,4)
>>> np.einsum('ik,jk->ijk', A, B)
array([[[ 0, 1, 4, 9],
[ 0, 5, 12, 21],
[ 0, 9, 20, 33]],

[[ 0, 5, 12, 21],
[16, 25, 36, 49],
[32, 45, 60, 77]]])

关于python - 在不执行求和的情况下在 python numpy 中获取张量积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25574976/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com