2017-06-13 2 views
0

C'est une sorte de question débutant pytorch. Dans pytorch j'essaye de faire la division sage d'élément avec deux tenseurs de taille [5,5,3]. En numpy cela fonctionne très bien en utilisant np.divide(), mais d'une façon ou d'une autre j'obtiens une erreur ici. J'utilise PyTorch version 0.1.12 pour Python 3.5.division tensorielle en pytorch. Erreur d'assertion

c = [torch.DoubleTensor de taille 5x5x3]

input_patch = [torch.FloatTensor de taille 5x5x3]

input_patch est une tranche d'une variable de torch.autograd, et c est réalisée en faisant c = torch.from_numpy (self.patch_filt [:,:,:, 0]). float()

Quand vous faites:

torch.div(input_patch, c) 

Je reçois cette erreur que je ne comprends pas.

line 317, in div 
assert not torch.is_tensor(other) 
AssertionError 

Cela signifie-t-il que la variable c ne devrait pas être un torch_tensor? Après avoir lancé c pour être également un FloatTensor donne toujours la même erreur.

Merci!

+1

Salut! Je ne peux pas reproduire votre erreur comme ça. Quelle version de Pytorch utilisez-vous et comment avez-vous produit input_patch et c? Assurez-vous que les deux c et input_patch sont du même type dtype et sont à la fois torch.autograd.Variable ou les deux sont des tenseurs communs. Je suppose que vous pourriez avoir fait un Variable et l'autre pas? La ligne de votre erreur est seulement de distinguer entre avoir fourni un tenseur comme diviseur ou une constante autant que je sache. Comme les deux sont possibles. – mexmex

Répondre

1

Input_patch est une tranche d'une variable torch.autograd, et c est fait en faisant

c = torch.from_numpy(self.patch_filt[:, :, :, 0]).float() 

Quoi qu'il en soit, mexmex, grâce à votre commentaire que je l'ai résolu en définissant c comme

Variable(torch.from_numpy(self.patch_filt[:, :, :, 0])).float()