2017-06-13 4 views
0

Dies ist eine Art Anfängerfrage für Pytorch. In pytorch versuche ich elementweise mit zwei Tensoren der Größe [5,5,3] zu teilen. In numpy funktioniert es gut mit np.divide(), aber irgendwie bekomme ich hier einen Fehler. Ich verwende PyTorch Version 0.1.12 für Python 3.5.tensor division in pytorch. Assertionsfehler

c = [torch.DoubleTensor der Größe 5x5x3]

input_patch = [torch.FloatTensor der Größe 5x5x3]

input_patch ist eine Scheibe eines torch.autograd Variable und C wird durch C tut = torch.from_numpy (self.patch_filt [:,:,:, 0]). float()

Wenn tun:

torch.div(input_patch, c) 

ich diesen Fehler, die ich nicht verstehe.

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

Bedeutet dies, dass Variable c kein fackel_tensor sein sollte? Nach dem Casting c gibt es auch noch einen FloatTensor den gleichen Fehler.

Vielen Dank!

+1

Hallo! Ich kann deinen Fehler nicht so reproduzieren. Welche Version von Pytorch benutzt du und wie hast du Input_Patch und c erzeugt? Stellen Sie sicher, dass sowohl c als auch input_patch vom selben dtype sind und entweder fackel.autograd.Variable oder beides gemeinsame Tensoren sind. Ich vermute, du hast vielleicht eine Variable gemacht und die andere nicht? Die Zeile in Ihrem Fehler ist nur zu unterscheiden, ob ein Tensor als Teiler oder eine Konstante geliefert wurde, soweit ich weiß. Wie beides möglich ist. – mexmex

Antwort

1

Input_patch eine Scheibe eines torch.autograd Variable ist, und c durch tun

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

Wie auch immer, mexmex dank Ihrer Bemerkung, die ich habe durch die Definition von c als

Variable(torch.from_numpy(self.patch_filt[:, :, :, 0])).float() 
löst es gemacht
Verwandte Themen