0

我有两个大的 numpy 矩阵,Xr(大约 5500x3500)。我需要计算digamma(X+r)and digamma(r),我用scipy.special.psi. 计算发生在我用于梯度下降拟合的梯度函数中。在优化过程中,梯度函数会被调用很多次,因此它必须快速运行。现在,对于实际问题:

  • digamma(r)大约需要 11 秒才能运行
  • digamma(X+r)运行大约需要 50 秒

出于好奇,我跑了一些其他的例子:

  • digamma(X.astype(np.float64)), 运行大约需要 1 分钟
  • digamma(X), 运行大约需要 5-6 分钟

为什么会发生这种情况,我能做些什么来改善运行时间?

  • Xnumpy.int64包含从 0 到 164 的整数 ( )。
  • rnumpy.float64包含从 0. 到 ~4.6 的浮点数 ( )。
  • X 非常稀疏(大约 75% 为 0)。
  • r 不是稀疏的(大约 10% 为 0)

编辑:更正X.as_float

4

0 回答 0