【发布时间】:2019-04-28 16:39:47
【问题描述】:
我正在寻找一种在 Matlab 中收缩张量的两个索引的方法。
假设我有一个维度为 [17,10,17,12] 的张量,我正在寻找一个函数,它对具有相同索引的第一维和第三维求和,并留下一个维度为 [10,12] 的矩阵(类似到二维的轨迹)。
我目前正在研究张量网络,主要使用“置换”和“重塑”功能。如果一个人在收缩多个张量并且从一开始就没有小心,那么最终可能会得到一个想要在 [i,j,i,k] 形式的张量中收缩的索引。
当然,人们可以返回并以一种不会发生这种情况的方式收缩张量,但我仍然对更强大的解决方案感兴趣。
编辑:
大意是:
A = rand(17,10,17,12);
A_contracted = zeros(10,12);
for i = [1:10]
for j = [1:12]
for k = [1:17]
A_contracted(i,j) = A_contracted(i,j) + A(k,i,k,j);
end
end
end
【问题讨论】: