【发布时间】:2020-09-22 00:25:27
【问题描述】:
我正在处理 Cupy 的问题。我目前正在使用 Cupy,它以非常令人满意的高速运行。但是当我使用cupy.einsum() 方法时出现问题
我使用与 Numpy 相同的语法,没有任何错误。但是当使用 Cupy 时,它给了我一个错误。这是代码部分
import numpy as np
A = np.random.randn(2,3,10)
B = np.random.randn(3,4)
C = np.einsum('ijk,jl->ijl',A,B)
这很有效,我得到了我想要的结果。但是,当我用 Cupy 编写相同的代码时
import cupy as cp
A = cp.random.randn(2,3,10)
B = cp.random.randn(3,4)
C = cp.einsum('ijk,jl->ijl',A,B)
当我运行它时,会计算 A 和 B。但是在计算 C 时它给了我一个错误。这是错误:
Traceback(最近一次调用最后一次):
文件“”,第 4 行,在 C = cp.einsum('ijk,jl->ijl',A,B)
文件 "C:\Users\Okan\anaconda3\lib\site-packages\cupy\linalg\einsum.py", 第 389 行,在 einsum result_dtype = cupy.result_type(*operands) if dtype is None else dtype
文件“array_function internals>”,第 6 行,在 result_type 中
TypeError: 在类型上找不到“numpy.result_type”的实现 实现array_function:[
]
如果您对此问题有任何想法或解决方案,我将非常高兴。 谢谢。
【问题讨论】:
-
您使用的是哪个 NumPy/CuPy 版本?您的 NumPy 代码在我使用 NumPy 1.16.6 或 1.19.1 的环境 (
ValueError: einstein sum subscripts string contains too many subscripts for operand 0) 中引发错误。 -
感谢您的警告。我在编写代码部分时犯了一个错误。不是我编辑过的,代码部分正在我的电脑上运行。但我仍然对 Cupy 有同样的问题。
-
我无法使用 CuPy v7.8.0 重现此错误。你能告诉我你用的是什么版本吗?
-
现在,我正在使用 anaconda,显然它支持 6.0.0 版本。 anaconda.org/anaconda/cupy
-
那个包似乎已经过时了(很抱歉造成混淆......我们将讨论是否最好删除它。)你可以使用 conda-forge 包来安装最新的 CuPy 吗? docs.cupy.dev/en/stable/…