Ich bin derzeit mit diesem Problem konfrontiert: Ich kann nicht meine Gradienten symbolische Variablen in einem Recurrent Neural Network mit Theano codiert bewerten. Hier ist der Code:[Theano] Wie Gradient basierend auf gemeinsamen Variablen zu bewerten ist
W_x = theano.shared(init_W_x, name='W_x')
W_h = theano.shared(init_W_h, name='W_h')
W_y = theano.shared(init_W_y, name='W_y')
[self.y, self.h], _ = theano.scan(self.step,
sequences=self.x,
outputs_info=[None, self.h0])
error = ((self.y - self.t) ** 2).sum()
gW_x, gW_y, gW_h = T.grad(self.error, [W_x, W_h, W_y])
[...]
def step(self, x_t, h_tm1):
h_t = T.nnet.sigmoid(T.dot(self.W_x, x_t) + T.dot(h_tm1, self.W_h))
y_t = T.dot(self.W_y, h_t)
return y_t, h_t
ich nur die Dinge, hielt ich angemessen gedacht waren.
Ich würde gerne in der Lage sein, zum Beispiel 'gW_x' zu berechnen, aber wenn ich versuche, es als eine theano-Funktion einzubetten, funktioniert es nicht, weil seine Abhängigkeiten (W_x, W_h, W_y) gemeinsame Variablen sind.
Vielen Dank
Vielen Dank für Ihre Antwort! Ja, es ist ein Tippfehler, aber da die Schrittfunktion ein Mitglied meiner Klasse ist, habe ich self.W_x usw. benutzt. Darin denken Sie, dass es falsch ist? Und ich bekomme nicht, wie man Gradientenwerte daraus extrahiert :(Danke !!! –
Danke, dass das Problem gelöst und tatsächlich habe ich einen Parameter zu meinen grad-Funktionen vergessen !! vielen Dank noch einmal –