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?
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
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()
Vous pouvez utiliser cette syntaxe si certains diplômés sont attachés à vos variables.
y=torch.Tensor.cpu(x).detach().numpy()[:,:,:,-1]