我对 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))
也会得出错误的输出结果