如何子类化 CuPy 数组?

Posted

技术标签:

【中文标题】如何子类化 CuPy 数组?【英文标题】:How to subclass a CuPy array? 【发布时间】:2019-02-25 01:49:19 【问题描述】:

NumPy 可以使用

class A(np.ndarray): pass
a = np.random.rand(10, 10).view(A)
print(a) # OK

但是对于 Cupy,下面的操作会导致段错误:

class A(cp.ndarray): pass
a = cp.random.rand(10, 10).view(A)
print(a) # segfault

我浏览了文档,但几乎没有找到任何信息。这是预期的吗? 我正在使用 CuPy 5.2、Python 3.6.8 和 CUDA10。

【问题讨论】:

【参考方案1】:

根据numpy.ndarray.view 的文档,它需要两个输入参数:dtypetype。如果dtype 参数是numpy.ndarray 的子类,则将其解释为type 参数。

另一方面,根据cupy.ndarray.view 的文档,它只需要一个输入参数:dtype。我猜cupy.ndarray.view 现在不支持type 参数。

【讨论】:

以上是关于如何子类化 CuPy 数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 CuPy 数组传输到 tensorflow

如何使用训练有素的模型预测 Cupy 数组?

如何在 Cupy 中使用多个 GPU?

Cupy结构数组下标

如何使用cupy循环numpy ndarray?真的会提高执行时间吗?

将数组的列作为向量执行“for循环”时,Cupy 比 numpy 慢