2016-03-30 2 views
0

Es scheint, dass variable.shape mir mitteilen würde, dassKann ich die Forminformationen der gemeinsamen Variablen in theano haben?

AttributeError: 'SharedVariable' object has no attribute 'shape' 

während theano.tensor.shape (variabel) wird mir ein, warum shape.0

Ich bin wirklich verwirrt zurückkehren kann ich keine Form Informationen erhalten auf diesem? Dasselbe Problem tritt auf, wenn ich die Forminformation einer symbolischen Variable erhalten möchte. Es ist einfach so komisch.

x = T.matrix('x') # the data is presented as rasterized images 
y = T.ivector('y') # the labels are presented as 1D vector of 
         # [int] labels 

layer0_input = x.reshape((batch_size, 1, 28, 28)) 

In dem obigen Beispiel die x (symbolische Variable) wurde bis zu einem gewissen Form umgestaltet, wenn nicht Sinn für mich, wenn ich nicht seine Form Informationen abrufen kann, während sie noch Form neu zuweisen könnte.

Antwort

1

Der erste Fehler ist wahrscheinlich aufgrund der Tatsache, dass Sie die shape Eigenschaft auf dem Datentyp SharedVariable, nicht auf einer tatsächlichen gemeinsamen Variablen zu bewerten versucht.

Ansonsten ist das Erhalten shape.0 völlig normal: Dies ist ein symbolischer Ausdruck, der die Form darstellt, die a priori unbekannt ist. Sobald Sie mit Daten auswerten, sehen Sie die Form:

import theano 
import theano.tensor as T 
import numpy as np 
s = theano.shared(np.arange(2 * 3 * 5).reshape(2, 3, 5)) 
print(s.shape) # gives you shape.0 
print(s.shape.eval()) # gives you an array containing 2, 3, 5 

a = T.tensor3() 
print(a.shape) # gives you shape.0 
print(a.shape.eval({a: np.arange(2 * 3 * 5).reshape(2, 3, 5).astype(theano.config.floatX)})) # gives 2, 3, 5 
+0

Vielen Dank. Können Sie eine andere Frage von mir sehen? Http: //stackoverflow.com/questions/36312253/why-cant-i-evaluate-the-reshaped-tensorvariable-in-theano – xxx222