0

我正在使用cupy执行以下操作,这非常快:

import cupy as cp

shape = (256, 170, 256)

deformation = cp.meshgrid(cp.arange(shape[0]),
                          cp.arange(shape[1]),
                          cp.arange(shape[2]),
                          indexing='ij')

但是,如果我将其转换为数组:

deformation = cp.array(cp.meshgrid(cp.arange(shape[0]),
                                   cp.arange(shape[1]),
                                   cp.arange(shape[2]),
                                   indexing='ij'))

这似乎很慢或只是挂起(我在 5 分钟后放弃了)。我不确定我在这里做错了什么。

我也尝试传递copy=Falsecp.array电话,但这并没有改变任何东西。

4

1 回答 1

1

我不相信这种将 cupy 数组列表转换为 cupy 数组的方法。如果我让你shape变得更小,例如 (8,8,8),我会得到一个 python 错误。

如果我们研究的文档cupy.meshgrid我们会看到它返回:

返回:cupy.ndarray 列表

Cupy文档特别指出:

目前,cupy.array()或者cupy.asarray()不能从包含 CuPy 数组的 Python 对象创建数组(例如,CuPy 数组的列表)。改为使用cupy.stack()

使用那里的建议,这对我来说似乎工作得相对较快:

$ cat t6.py
import cupy as cp

shape = (256, 170, 256)

deformation = cp.stack(cp.meshgrid(cp.arange(shape[0]),
                          cp.arange(shape[1]),
                          cp.arange(shape[2]),
                          indexing='ij'))
$ time python t6.py

real    0m1.281s
user    0m0.608s
sys     0m0.492s
$
于 2019-07-29T16:52:43.130 回答