gpt4 book ai didi

python - 快速核矩阵计算 python

转载 作者:行者123 更新时间:2023-11-30 09:13:48 24 4
gpt4 key购买 nike

我想以尽可能最快的方式在 python 中计算内核矩阵:输入是一个矩阵 X= nsamples, nfeatus输出应该是一个对称矩阵 D =nsamples, nsapmles

我现在正在使用的方法,即使是基于迭代器的,对于 for 循环来说似乎真的很慢......有人能想到更好的方法吗?

谢谢

到目前为止我的方法是:

from itertools import combinations
def computeKernel(X,dlambda):
nsamples=X.shape[0]
D=numpy.zeros((nsamples,nsamples))
for el in combinations(range(nsamples),2):
i,j=el
D[el]=quadraticChiDist(X[i,:],X[j,:])


D=D+D.T
D=numpy.exp(-dlambda*D/255)
D=numpy.eye(D)+D
return D

其中quadraticChiDist是针对X中每个可能的行对进行计算的函数

最佳答案

通过替换内循环可以将运行时间减少一半

for i in range(nsamples):
for j in range(i):
D[i,j]=quadraticChiDist(X[i,:],X[j,:])
D[j,i]=D[i,j]

即使 quadraticChiDist 不是对称的,这也没关系,因为您将矩阵对称化(您忘记除以 2 了吗?)::

D = D + D.T

为了进一步加速,我建议优化 quadraticChiDist 的速度。

我进一步推荐http://cython.org/ ,特别是http://docs.cython.org/src/tutorial/numpy.html 。在许多情况下,这可以让您达到 C 的速度。

关于python - 快速核矩阵计算 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7391779/

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