【问题标题】:How to convert a cupy.ndarray to a scalar?如何将 cupy.ndarray 转换为标量?
【发布时间】:2020-11-30 17:55:51
【问题描述】:

我目前正在使用 CuPy。我注意到一些似乎是错误的东西,但我不确定。

我注意到,如果我使用某些数学函数,它们会导致错误的形状。例如:

如果我使用 numpy 执行此操作,它会返回一个没有形状的标量。应该的。

s8 = numpy.abs(2)

但是,如果我使用 CuPy:

s8 = cupy.abs(2)

结果为@​​987654323@。当使用s8.shape 评估时,它返回()

令人沮丧的部分是试图将 cupy.ndarray 转换为没有形状的标量。我试过使用: cupy.Squeeze(s8)s8.item() 只返回标量。在这两种情况下,它都会返回值但保留形状。我也尝试过使用float(s8)int(s8)。两者都返回适当的值类型,但数组仍然存在。

关于如何将其从 cupy.ndarray 转换为标量的任何想法?

【问题讨论】:

    标签: python-3.x cupy


    【解决方案1】:

    这是 CuPy 中的已知行为,不是错误: https://docs.cupy.dev/en/stable/reference/difference.html#reduction-methods

    与 NumPy 不同(区分标量和 0-d 数组),CuPy 中的所有标量都是 0-d 数组,否则将不可避免地通过将它们转换为 Python 标量而导致数据传输,这会影响性能.

    【讨论】:

    • 这没有回答“如何将 cupy.ndarray 转换为标量?”的问题
    猜你喜欢
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2019-07-30
    • 2019-04-20
    • 1970-01-01
    相关资源
    最近更新 更多