【问题标题】:Numpy sum keepdims errorNumpy总和keepdims错误
【发布时间】:2017-08-09 21:47:35
【问题描述】:

在矩阵上调用 numpy sum 函数时,Python 会引发错误。

probs = exp_scores / np.sum(exp_scores, axis=1, keepdims=True)

错误

probs = exp_scores / np.sum(exp_scores, axis=1, keepdims=True)
TypeError: sum() got an unexpected keyword argument 'keepdims'

上下文:计算 softmax 分类器的损失函数。分子是正确类别的得分函数的指数,分母是所有可能类别的所有指数的总和。

【问题讨论】:

  • 你的 NumPy 版本是多少?听起来很老。

标签: python numpy


【解决方案1】:

keepdims 参数是在 NumPy 1.7 中添加的。至少np.sum (1.6) 的文档字符串没有将其列为参数之一:

numpy.sum(a, axis=None, dtype=None, out=None)

但是1.7 docstring 已经列出了它:

numpy.sum(a, axis=None, dtype=None, out=None, keepdims=False)

鉴于 NumPy 1.6 是在 2012 发布的,您可能应该更新您的 NumPy 包。

但是,如果您不能(或不想)更新 NumPy,您也可以使用 np.expand_dims

np.expand_dims(np.sum(exp_scores, axis=1), axis=1)

【讨论】:

    【解决方案2】:

    该参数在最新版本的 numpy 中有效,如 here 所述。以下是 numpy.sum 的完整参数列表:

    numpy.sum(a, axis=None, dtype=None, out=None, keepdims=False)

    这是从 1.7 版开始添加的,您可以在源代码 here 中看到。因此,您需要升级您的 numpy 安装。

    【讨论】:

      猜你喜欢
      • 2018-03-07
      • 2023-03-12
      • 1970-01-01
      • 2017-04-17
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      相关资源
      最近更新 更多