多个轴上的numpy张量点不等于重复的张量点?

时间:2018-07-09 13:43:57

标签: python numpy tensor

我对 select object_name(constid) as "Constraint name", object_name(sysconstraints.id) as"Table name" , [TEXT] from sysconstraints join syscomments on syscomments.id =sysconstraints.constid where object_name(constid) like '%repl%' order by [Table name] 在多个轴上同时且连续tensordot的等效性感到困惑。 考虑以下设置:

tensordot

这一切都符合预期(请注意,a = [[[1,0],[0,0]],[[0,0],[0,1]]] b = [[[1,0],[0,1]],[[0,1],[1,0]]] >>> print(np.tensordot(a,b, axes=(0,0))) [[[[1,0],[0,1]],[[0,0],[0,0]]],[[[0,0],[0,0]],[[0,1],[1,0]]]] a直到置换为止都是相同的,因此无论我们收缩哪个轴都没有关系)。 现在,考虑一下:

b

这应该提供与第一个输出相同的输出,因为我们仅以不更改输出的身份另外签约。实际上,据我所知,该表达式应等效于:

id2 = [[1,0],[0,1]]
c = np.tensordot(id2, a, axes=0) #tensorproduct of a with identity
>>> np.tensordot(c,b,axes=([1,3],[0,1])) #contract b with identity, and with a
[[[[1,0],[0,0]],[[0,0],[0,1]]],[[[0,1],[0,0]],[[0,0],[1,0]]]]

哪些给出正确的输出。那么这是怎么回事?如何使用单个张量点(或einsum)表示最后一条语句?

编辑: 计算np.tensordot(id2,np.tensordot(a,b,axes=(1,0)),axes=(1,0)) 也会得出错误的输出结果

0 个答案:

没有答案