如何在大型稀疏矩阵中加速digamma计算?

2024-09-27 07:27:54 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

出于好奇,我又举了几个例子:

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

为什么会发生这种情况,我可以做些什么来改进运行时?

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

编辑:已更正X.as_float


Tags: 函数numpy过程np情况矩阵整数scipy

热门问题