web-dev-qa-db-fra.com

Tableau tenseur de pytorch à numpy

J'ai un pytorch tenseur de taille torch.Size([4, 3, 966, 1296])

Je veux le convertir en tableau numpy à l'aide du code suivant:

imgs = imgs.numpy()[:, ::-1, :, :]

Quelqu'un peut-il s'il vous plaît expliquer ce que fait ce code?

11
DukeLover

Il y a 4 dimensions du tenseur que vous souhaitez convertir.

[:, ::-1, :, :] 

: _ signifie que la première dimension doit être copiée telle quelle et convertie, il en va de même pour les troisième et quatrième dimensions.

::-1 signifie que pour les deuxièmes axes, il inverse les axes

11
Maaz Bin Musa

Je crois que vous devez également utiliser .detach (). J'ai dû convertir mon Tenseur en un tableau numpy sur Colab qui utilise CUDA et GPU. Je l'ai fait comme suit:

# this is just my embedding matrix which is a Torch tensor object
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()
6
Azizbro

Vous pouvez utiliser cette syntaxe si certains diplômés sont attachés à vos variables.

y=torch.Tensor.cpu(x).detach().numpy()[:,:,:,-1]

0
Muhammad Bilal