小编Rus*_*shi的帖子

Numpy matmul 和 einsum 比 MATLAB 慢 6 到 7 倍

我正在尝试将一些代码从 MATLAB 移植到 Python,但 Python 的性能却慢得多。我不太擅长 Python 编码,因此任何加快这些速度的建议将不胜感激。

我尝试了einsum单行(在我的机器上需要7.5 秒):

import numpy as np

n = 4
N = 200
M = 100
X = 0.1*np.random.rand(M, n, N)
w = 0.1*np.random.rand(M, N, 1)

G = np.einsum('ijk,iljm,lmn->il', w, np.exp(np.einsum('ijk,ljn->ilkn',X,X)), w)
Run Code Online (Sandbox Code Playgroud)

我也尝试了一个matmult实现(在我的机器上需要6 秒

G = np.zeros((M, M))
for i in range(M):
    G[:, i] = np.squeeze(w[i,...].T @ (np.exp(X[i, :, :].T @ X) @ w))
Run Code Online (Sandbox Code Playgroud)

但我原来的 MATLAB 代码要快得多(在我的机器上需要1 秒)

n = 4;
N = 200;
M …
Run Code Online (Sandbox Code Playgroud)

python numpy numpy-einsum

5
推荐指数
1
解决办法
287
查看次数

标签 统计

numpy ×1

numpy-einsum ×1

python ×1