You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Julia中张量循环展开(TCU)的逆操作实现方案

张量循环展开(TCU)的逆操作实现需求

我已基于某文献定义2实现了张量循环展开(TCU),通过TensorToolbox在Julia中完成,代码如下:

using TensorToolbox
function TCU(X,d,k)
    N = ndims(X)
    @assert d < N
    if d <= k
        a = k-d+1
    else
        a = k-d+1+N
    end
    tenmat(permutedims(X,circshift(1:N,-a+1)),row=1:d)
end

其中:

  • N为输入张量X的维度
  • d<N、k≤N为正整数
  • tenmat函数来自TensorToolbox.jl,用于张量矩阵化

以下是N=4的示例:

X = rand(1:9,3,4,2,2)
#3×4×2×2 Array{Int64, 4}:
#[:, :, 1, 1] =
# 5  7  2  6
# 4  5  6  2
# 6  8  9  1
#
#[:, :, 2, 1] =
# 4  3  7  5
# 8  3  3  1
# 8  2  4  7
#
#[:, :, 1, 2] =
# 4  3  9  6
# 7  4  9  2
# 6  7  2  4
#
#[:, :, 2, 2] =
# 9  2  1  7
# 8  2  1  3
# 6  2  4  9

M = TCU(X, 2, 3)
#8×6 Matrix{Int64}:
# 5  4  4  7  6  6
# 7  3  5  4  8  7
# 2  9  6  9  9  2
# 6  6  2  2  1  4
# 4  9  8  8  8  6
# 3  2  3  2  2  2
# 7  1  3  1  4  4
# 5  7  1  3  7  9

现需实现上述函数的逆操作InvTCU,需满足:

X == InvTCU( TCU(X, d, k), d, k )

若有需要,InvTCU可接收原张量尺寸size(X),即满足:

X == InvTCU( TCU(X, d, k), d, k, size(X) )

该逆操作是实现文献中PTRC算法公式(18)的必要步骤,且原张量尺寸为已知信息。

【补充说明】tenmat函数用于张量矩阵化,InvTCU可接收原张量尺寸作为参数。

内容的提问来源于stack exchange,提问作者Sakurai.JJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:30:47