讲解reduce_sum() got an unexpected keyword argument 'keep_dims'

举报
皮牙子抓饭 发表于 2024/01/03 09:19:02 2024/01/03
【摘要】 讲解reduce_sum()出现"got an unexpected keyword argument 'keep_dims'"在使用NumPy的reduce_sum()函数时,有时候可能会遇到错误信息:"got an unexpected keyword argument 'keep_dims'"。这个错误信息是由于NumPy的版本更新引入了变化,keepdims参数取代了旧版的keep_...

讲解reduce_sum()出现"got an unexpected keyword argument 'keep_dims'"

在使用NumPy的reduce_sum()函数时,有时候可能会遇到错误信息:"got an unexpected keyword argument 'keep_dims'"。这个错误信息是由于NumPy的版本更新引入了变化,keepdims参数取代了旧版的keep_dims参数。在本篇文章中,我们将详细解释这个错误信息的原因,并展示如何正确使用reduce_sum()函数。

错误信息解释

在早期版本的NumPy中,reduce_sum()函数接受一个名为keep_dims的关键字参数,用于指定是否保留减少的维度。然而,随着NumPy版本的更新,keep_dims参数被改为keepdims,以更符合命名约定。 因此,当我们在新版NumPy中使用旧版的代码时,可能会遇到上述错误信息。Python解释器无法识别keep_dims作为一个有效的关键字参数。

正确使用reduce_sum()

为了解决这个问题,我们需要将keep_dims参数修改为keepdims,以匹配新版NumPy的命名约定。下面是一个示例:

pythonCopy code
import numpy as np
# 创建一个多维数组
arr = np.array([[1, 2], [3, 4]])
# 使用reduce_sum()函数计算数组元素的和,并保留维度
result = np.reduce_sum(arr, axis=0, keepdims=True)
print("结果:", result)

在这个示例中,我们创建了一个2x2的数组arr,然后使用reduce_sum()函数计算了数组元素的和,并使用了keepdims=True参数来保留计算结果的维度。 注意,我们使用的是新版NumPy中的reduce_sum()函数,而不是旧版的reduce_sum()函数。 当代码执行时,你将看到正确的计算结果,而不再会遇到"got an unexpected keyword argument 'keep_dims'"的错误信息。


下面是一个示例,展示了在机器学习中如何使用reduce_sum()函数计算损失函数的和。

pythonCopy code
import numpy as np
# 模拟训练数据和标签
predictions = np.array([[0.2, 0.8], [0.6, 0.4], [0.4, 0.6]])
labels = np.array([[1, 0], [0, 1], [0, 1]])
# 计算交叉熵损失
loss = -labels * np.log(predictions)
# 使用reduce_sum()函数计算损失函数的和
total_loss = np.reduce_sum(loss)
# 打印计算结果
print("总损失:", total_loss)

在这个示例中,我们模拟了一组模型的预测predictions和相应的标签labels。我们使用交叉熵损失函数来计算每个预测和标签之间的损失。 然后,我们使用reduce_sum()函数来计算损失函数的总和。通过将reduce_sum()应用于loss数组,它会将所有元素相加起来,得到总损失。 最后,我们打印出计算的结果,就是总损失的值。 这个示例中的应用场景可以是机器学习模型的训练过程中,使用交叉熵损失函数来评估模型的性能。通过计算损失函数的总和,我们可以得到模型在整个训练数据集上的损失情况。


reduce_sum()是NumPy库中的一个函数,用于计算数组元素的和。它可以在指定的轴上对数组进行求和操作,从而降低数组的维度。 函数定义:

pythonCopy code
numpy.reduce_sum(a, axis=None, dtype=None, keepdims=False, initial=0)

参数说明:

  • a:输入数组。
  • axis:要沿着哪个轴进行求和操作。默认情况下(axis=None),对整个数组进行求和操作。设置为整数值,则对指定的轴进行求和;设置为元组或列表,则对多个轴进行求和。
  • dtype:指定结果的数据类型,默认为None,表示保持数组的数据类型。
  • keepdims:指定是否保持降维后的数组维度。默认为False,即结果将降低维度;设置为True,则结果将保持与输入数组相同的维度。
  • initial:初始值,用于在计算数组元素和时加上一个初始值,默认为0。 返回值:计算得到的数组或者标量值。 示例代码:
pythonCopy code
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
sum_result = np.reduce_sum(arr)
print("总和:", sum_result)

在这个示例中,我们定义了一个2x3的数组arr,然后使用reduce_sum()函数计算了整个数组的元素和。函数的默认行为是对整个数组进行求和,所以我们不需要指定axis参数。 最后,我们打印出计算得到的总和。 reduce_sum()函数的应用场景很多,包括计算统计量(例如平均值、方差等)、计算损失函数、降维操作等。它是对多维数组进行求和操作时的常用工具。

总结

当我们在使用NumPy的reduce_sum()函数时,若遇到错误信息"got an unexpected keyword argument 'keep_dims'",这是由于旧版的keep_dims参数被新版的keepdims参数所取代所致。 为了修正该错误,我们需要将旧版代码中的keep_dims参数修改为keepdims,以符合新版NumPy的命名约定。 希望本篇文章能帮助你理解如何解决"got an unexpected keyword argument 'keep_dims'"的错误,并顺利使用reduce_sum()函数进行数组元素计算。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。