2016-06-16 6 views
0

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

Antwort

0

Ich glaube, dass in diesem Fall müssen Sie die Umgebungsvariablen auf die Funktion self.step im non_sequences Argument von theano.scan passieren.

Daher müssen Sie die Signatur von self.step ändern, um drei weitere Argumente zu verwenden, die den gemeinsam genutzten Variablen entsprechen, und dann das Argument non_sequences=[W_x, W_h, W_y] zu theano.scan hinzufügen.

Auch ich vermute, Sie haben vielleicht einen Tippfehler in der vorletzten Zeile gemacht - sollte es error = ((self.y - t) ** 2).sum() sein?

+0

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 !!! –

+0

Danke, dass das Problem gelöst und tatsächlich habe ich einen Parameter zu meinen grad-Funktionen vergessen !! vielen Dank noch einmal –

Verwandte Themen