问题描述
我想在高维公式中使用高斯正态分布来计算大量矢量的概率密度,现在我有了这个工作-
def f(self,x):
# [1x2] [2x2] [2x1] ==> [1x1]
return np.exp(-(x.T @ self.inv_cov @ x) / 2)
np.apply_along_axis(self.f,1,x_m.T)
与此处框中的公式相对应
虽然可以,但是非常慢。是否有比apply_along_axis
更好的方法来获得相同的结果?
我正在寻找一种[nx2]x[2x2]x[2xn] = [nx1]
n可以变化的方法。
我确实找到了一种解决方法,但是它占用了巨大的内存,而numpy表示这是不可能的
解决方法是仅从此计算[nxn]
中获取结果[nx2]x[2x2]x[2xn]
矩阵的对角元素
解决方法
多亏了@hpaulj的评论,我能够按如下方式使用批处理计算-
我的x_m维度为[2xN],经过此修改,计算就变成了@hpaulj所评论的-> [admin-new] /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty,will attempt to perform configuration
[admin-new] /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
[admin-new] /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
[admin-new] 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
[admin-new] 10-listen-on-ipv6-by-default.sh: error: /etc/nginx/conf.d/default.conf differs from the packaged version
[admin-new] /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
[admin-new] /docker-entrypoint.sh: Configuration complete; ready for start up
[m x 1x2][m x 2x2][m x 2x1] ==> [m x 1x1]