微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

cupy.full方法fill_value不能接受数组?

如何解决cupy.full方法fill_value不能接受数组?

我注意到fill_value中的numpy.full()参数可以是一个数组。

>>> a = np.arange(5)
>>> a
array([0,1,2,3,4])
>>> b = np.full( (5,10),a[:,None],dtype=np.int16 )
>>> b
array([[0,0],[1,1],[2,2],[3,3],[4,4,4]],dtype=int16)

但是,我注意到CuPy中的fill_value参数不能实现。

>>> b_gpu = cp.full( (5,dtype=np.int16 )
Traceback (most recent call last):
  File "<pyshell#25>",line 1,in <module>
    b_gpu = cp.full( (5,dtype=np.int16 )
  File "/home/master/.local/lib/python3.6/site-packages/cupy/creation/basic.py",line 271,in full
    a.fill(fill_value)
  File "cupy/core/core.pyx",line 499,in cupy.core.core.ndarray.fill
  File "cupy/core/core.pyx",line 510,in cupy.core.core.ndarray.fill
ValueError: non-scalar numpy.ndarray cannot be used for fill

是否缺少功能或编写CuPy的方式有错误

解决方法

我找到了一种使用cp.repeatreshape在GPU中复制b = np.full( (5,10),a[:,None],dtype=np.int16 )的方法。

>>> b_gpu = cp.repeat( a,10 ).reshape(5,10)
>>> b_gpu
array([[0,0],[1,1,1],[2,2,2],[3,3,3],[4,4,4]])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。