【发布时间】:2017-02-08 10:07:07
【问题描述】:
假设我们有两个具有相同维度的张量(A 和 B)。我们可以将它们与tensordot 相乘。例如:
T.tensordot(A, B, axes = [[0,3], [0,3]])
在这种情况下,我们将第一个张量的轴与第二张量的一些轴“配对”,然后将这些“配对”轴相加:
C[j, k, a, b ] = sum_{i, l} A[i, j, k, l] * A[i, a, b, l]
在上面的例子中,第一个张量的第一个和最后一个轴分别与第二个张量的第一个和最后一个轴配对。
或者,我们可以将两个张量逐元素相乘:
C[i, j, k, l] = A[i, j, k, l] * B[i, j, k, l]
在这种情况下,我们将第一个张量的所有轴与第二个张量的所有对应轴“配对”(第一个与第一个,第二个与第二个等等)。
现在,我想做一些介于上述两个操作之间的事情。更详细的:
- 我想将第一个张量的某个轴与第二个张量的某个轴配对(就像 w 在
tensordot中做的那样)。所以,我不想将 A 的所有轴与 B 的所有轴配对。 - 我不想对所有成对的轴求和(就像我们在成对乘法中所做的那样,对成对的轴没有求和)。
这是我想用“数学”形式写的:
C[a, b, c, i] = sum_d A[a, b, c, d] * B[i, b, c, d]
在 theano 中最好的方法是什么?
【问题讨论】:
标签: python theano elementwise-operations