如何高效向量化Python中的目标函数?修正错误实现
问题描述
我已编写Python代码计算如下函数,其中y_i和z_i为固定值。

实际场景中,我需要在大量不同的向量x上计算该函数。为避免循环,我希望充分利用NumPy的向量化与广播特性。
目标:编写一个Python函数,输入为形状
(M, p)的矩阵X(每行对应一个向量x),为每行计算上述表达式,输出形状为(M, p)的结果。
单样本函数
def single_function(x): """Assumes y is a vector (n,) and Z is a matrix (n, p). These are fixed.""" return x / (sigma**2) - gamma*np.sum((np.exp(-np.logaddexp(0.0, y*np.matmul(Z, x))) * y)[:, None] * Z, axis=0)
向量化函数尝试
我尝试编写的向量化函数存在错误,但无法定位问题所在。
def vectorised(X): return X / (sigma**2) - gamma*np.matmul(np.exp(-np.logaddexp(0.0, y[None, :] * X.dot(Z.T))) * y[None, :], Z)
内容的提问来源于stack exchange,提问作者Euler_Salter
相关产品推荐
相关产品推荐

