linear-algebra - Julia 的 numpy.einsum?

标签 linear-algebra matrix-multiplication julia

我想知道如何在 Julia 中获得类似于 numpy.einsum 的功能。

具体来说,我有一个三阶张量,我希望将其乘以一个二阶张量(矩阵),收缩两个维度以产生一阶张量(向量)。

目前,我正在使用 PyCall,这样我就可以像这样使用 numpy.einsum 函数:

using PyCall
@pyimport numpy as np

a = rand(5,4,3)
b = rand(5,4)

c = np.einsum("ijk,ij", a,b)
size(c) == (3,)

依靠调用 python 来进行张量数学运算感觉有点傻。我还认为 julia 的实现会有速度优势。但是,我在 julia 中对此没有任何功能,而且蛮力求和要慢 1-2 个数量级。我可以使用哪些功能?

最佳答案

sum(a.*b,(1,2)) 不是您想要的吗?

关于linear-algebra - Julia 的 numpy.einsum?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22521574/

相关文章:

performance - 如何在 Julia 中最有效地使用 QR 分解?

python - 使用 3D numpy 数组的直观方法

julia - 矩阵的平均行

string - Julia:如何获得给定字符串 s 的随机排列?

arrays - 嵌套数组切片

python - 乘以 numpy 中包含图像的张量

c++ - 如何通过点和法线获取平面顶点

linear-algebra - 稠密线性代数的应用

performance - 优化不同大小的矩阵乘法

c - C 中的矩阵乘法多进程