Конвертировать Pytorch Tensor в Numpy Array, используя Cuda - PullRequest
0 голосов
/ 25 ноября 2018

Я хотел бы преобразовать тензор Pytorch в массив numpy, используя cuda:

, это строка кода без использования cuda:

A = self.tensor.weight.data.numpy ()

Как мне выполнить ту же операцию, используя cuda?Согласно этому: https://discuss.pytorch.org/t/how-to-transform-variable-into-numpy/104/3 кажется:

A = self.tensor.weight.data.cpu (). Numpy ()

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Полагаю, вы также должны использовать .detach () .Я должен был преобразовать свой Tensor в массив NumPlay на Colab, который использует CUDA и GPU.Я сделал это следующим образом:

embedding = learn.model.u_weight

embedding_list = list(range(0, 64382))

input = torch.cuda.LongTensor(embedding_list)
tensor_array = embedding(input)
# the output of the line bwlow is a numpy array
tensor_array.cpu().detach().numpy() 
0 голосов
/ 25 ноября 2018

Если тензор на gpu или cuda, как вы говорите.

Вы можете использовать self.tensor.weight.data.cpu().numpy(). Он скопирует тензор в cpu и преобразует его в массив numpy.

Если тензор уже включен в cpu, вы можете сделать self.tensor.weight.data.numpy() каквы правильно разобрались, но вы также можете сделать self.tensor.weight.data.cpu().numpy() в этом случае, так как тензор уже включен cpu, операция .cpu() не будет иметь никакого эффекта.и это может быть использовано как независимый от устройства способ преобразования тензора в массив numpy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...