Pytorch remodeler tenseur de dimension
Par exemple, j'ai 1D d'un vecteur de dimension (5). Je voudrais modifier la forme en 2D matrice (1,5).
Voici comment je le fais avec numpy
>>> import numpy as np
>>> a = np.array([1,2,3,4,5])
>>> a.shape
(5,)
>>> a = np.reshape(a, (1,5))
>>> a.shape
(1, 5)
>>> a
array([[1, 2, 3, 4, 5]])
>>>
Mais comment puis-je faire avec Pytorch Tenseur (et Variable). Je ne veux pas revenir à numpy et l'interrupteur de la Torche variable de nouveau, car il sera le perte les informations.
Voici ce que j'ai dans Pytorch
>>> import torch
>>> from torch.autograd import Variable
>>> a = torch.Tensor([1,2,3,4,5])
>>> a
1
2
3
4
5
[torch.FloatTensor of size 5]
>>> a.size()
(5L,)
>>> a_var = variable(a)
>>> a_var = Variable(a)
>>> a_var.size()
(5L,)
.....do some calculation in forward function
>>> a_var.size()
(5L,)
Maintenant je le veux de taille (1, 5).
Comment puis-je redimensionner ou remodeler la dimension de pytorch tenseur dans la Variable sans perte de grad de l'information. (parce que je les ferai paître dans un autre modèle d'avant en arrière)
OriginalL'auteur Haha TTpro | 2017-04-10
Vous devez vous connecter pour publier un commentaire.
Utilisation torche.unsqueeze(entrée, dim,=None)
OriginalL'auteur Haha TTpro
vous pouvez utiliser
a
. Il crée simplement un point de vue.OriginalL'auteur Lelik
ou vous pouvez l'utiliser, le '-1' signifie que vous n'avez pas à spécifier le nombre d'éléments.
OriginalL'auteur Mou Cai
Pour en place modification du tenseur, vous devriez certainement utiliser
tenseur.resize_():
Dans PyTorch, si il y a un trait de soulignement à la fin d'une opération (comme
tensor.resize_()
), alors que l'opération nein-place
modification du tenseur d'origine.Aussi, vous pouvez simplement utiliser
np.newaxis
dans une torche Tenseur d'augmenter la dimension. Voici un exemple:OriginalL'auteur kmario23
Cette question a été soigneusement déjà répondu, mais je tiens à ajouter pour les moins expérimentés python développeurs de ce que vous pourriez trouver la
*
opérateur utile en conjonction avecview()
.Par exemple, si vous avez un particulier tenseur de la taille que vous voulez un autre tenseur des données pour se conformer à l', vous pouvez essayer:
Cela fonctionne avec numpy
shape
trop:OriginalL'auteur saetch_g
OriginalL'auteur hindamosh
Assumer le code suivant:
Trois appels ont exactement le même effet:
Avis que, pour tout de la tenseurs, si vous modifiez les données dans eux, vous êtes aussi de modifier les données dans un, parce qu'ils n'ont pas une copie des données, mais de référence les données d'origine dans un.
L'autre façon de faire serait d'utiliser le
resize_
en place de l'opération:Être prudent d'utiliser
resize_
ou tout autre lieu de l'opération avecautograd
. Voir la discussion suivante: https://pytorch.org/docs/stable/notes/autograd.html#in-place-operations-with-autogradOriginalL'auteur Jadiel de Armas