Let X
be a Bxn
numpy
矩阵,即
import numpy as np
B = 10
n = 2
X = np.random.random((B, n))
现在,我对计算所谓的内核(甚至相似度)矩阵感兴趣K
,其形状为BxB
,及其{i,j}
-th 元素给出如下:
K(i,j) = fun(x_i, x_j)
where x_t
表示t
矩阵第 - 行X
and fun
是某个函数x_i
, x_j
。例如,这个函数可以是所谓的 RBF 函数,即
K(i,j) = exp(-|x_i - x_j|^2)。
为此,一个简单的方法如下:
K = np.zeros((B, B))
for i in range(X.shape[0]):
x_i = X[i, :]
for j in range(X.shape[0]):
x_j = X[j, :]
K[i, j] = np.exp(-np.linalg.norm(x_i - x_j, 2) ** 2)
我想要的是以向量化的方式进行上述操作,以提高效率。你能帮忙吗?
如果你利用 numpy 的力量,这当然是可能的广播 https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html.
您只需以矢量化的方式编写内部距离范数计算:
X1 = X[:, np.newaxis, :]
X2 = X[np.newaxis, :, :]
K = np.exp(-np.sum((X1 - X2)**2, axis=-1))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)