#python #python-3.x #numpy #cupy
#python #python-3.x #numpy #cupy
Вопрос:
Я пытаюсь заставить cupy использовать convolve из документа здесьhttps://docs.cupy.dev/en/latest/reference/generated/cupy.convolve.html
>>> import cupy as cp
>>> b = cp.array([0,0,0,1,0,0,0,1])
>>> cp.convolve(b, cp.ones(3), 'same') / 3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'cupy' has no attribute 'convolve'
Итак, свертка на numpy, похоже, работает, но не с cupy.
>>> import numpy as np
>>> a = np.array([0,0,0,1,0,0,0,1])
>>> np.convolve(a, np.ones(3), 'same') / 3
array([0. , 0. , 0.33333333, 0.33333333, 0.33333333,
0. , 0.33333333, 0.33333333])
Хотя базовые функции, такие как add, работают с cupy.
>>> cp.add(b, b)
array([0, 0, 0, 2, 0, 0, 0, 2], dtype=int32)
Настройка:
- Windows 10
- Python 3.8.5 (теги / v3.8.5:580fbb0, июль 20 2020, 15:57:54) [ MSC v.1924 64 бит (AMD64)] на win32
- cuda 11.0.3 451.82
- cuDNN 11.0 x64 v8.0.3.33
- cuTENSOR 1.2.0
pip:
- numpy-1.19.1
- cupy-cuda110-7.8.0
- optuna-2.0.0
Я выполнил чистую новую установку Python и cuda, …, но это не решило проблему. Сейчас я понятия не имею, чего еще может не хватать. Насколько я понял, это cupy, просто numpy обрабатывается на графическом процессоре, поэтому каждая функция numpy должна быть в cupy.
Комментарии:
1. Возможно, я обнаружил проблему, документы для последней версии, и моя версия cupy — 7.8.0, где convolve не упоминается. Я посмотрю, смогу ли я перейти на это.
Ответ №1:
Как кажется, cupy 7.8.0 не поддерживает convolve, только в версии 8.0.0, поэтому я теперь установил текущий релиз-кандидат cupy_cuda110-8.0.0rc1
pip install --pre -U cupy-cuda110
Теперь свертка работает нормально
Комментарии:
1. Похоже, мне также нужно обновить версию cuda с 10.1 до 11, чтобы обновить версию cupy. Но если я также использую tensorflow для графического процессора, то в настоящее время мне нужно использовать cuda 10.1, чтобы он работал в соответствии с tensorflow. Случайно, вы вообще не используете tensorflow?
2. @JeffBoker Я не использую tenserflow. Но новейшие версии cupy также доступны для других версий cuda, таких как 10.1 pypi.org/project/cupy-cuda101/#history