gpt4 book ai didi

julia - 爱因斯坦求和张量中的矩阵和 Julia 中的另一个张量

转载 作者:行者123 更新时间:2023-12-04 01:08:42 25 4
gpt4 key购买 nike

W是一个5×5的矩阵,元素是2×2的矩阵,例如:

S0=reshape([2,2,4,4], (2, 2))
W=reshape(Any[S0 for i in 1:25],(5,5))

A是一个2×2×2的张量,例如:

A= reshape([1,1,1,1,3,3,3,3], (2, 2, 2))

我想对 WS0 的第二个索引和 A 的第二个索引求和,我的意思是,

using Einsum
@einsum ans[a,b,c,d,e]:=W[a,b][c,i]*A[d,i,e]

但是发生错误:MethodError:无法将 Expr 类型的对象“转换”为 Symbol 类型的对象。有没有办法在 Julia 中计算这个爱因斯坦求和?

最佳答案

这不是一条优雅的错误消息,但 Einsum.jl 不会尝试处理数组的数组。然而:

julia> using Tullio

julia> @tullio out[a,b,c,d,e] := W[a,b][c,i] * A[d,i,e]
5×5×2×2×2 Array{Int64, 5}:
[:, :, 1, 1, 1] =
6 6 6 6 6
6 6 6 6 6
...

另请注意,不必使用 eltype Any 来包含其他数组,例如,它有 eltype(W2) == Matrix{Int64}:

julia> W |> summary
"5×5 Matrix{Any}"

julia> W2 = [copy(S0) for i in 1:5, j in 1:5]
5×5 Matrix{Matrix{Int64}}:
[2 4; 2 4] [2 4; 2 4] [2 4; 2 4] [2 4; 2 4] [2 4; 2 4]
...

关于julia - 爱因斯坦求和张量中的矩阵和 Julia 中的另一个张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65502191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com