2017-05-19 5 views
0

Ich bin jetzt in der Lage zu erstellen und zu lehren, Single-Layer-RNN-s mit Chainer, aber ich laufe auf Fehler, wenn ich versuche, mein Netzwerk zu erweitern. Hier ist mein Code, ich aus dem 2. verborgenen Schicht Teil kommentiert, so sollte dies als eine einzelne Schicht netmultilayer RNN mit chainer (LSTM)

#Regression 
class Regression(Chain): 
    def __init__(self, predictor): 
     super(Regression, self).__init__(predictor=predictor) 
    def __call__(self, x, t): 
     y = self.predictor(x) 
     loss = F.mean_squared_error(y, t) 
     report({'loss': loss}, self) 
     return loss 
     #return loss 
#%% 
#RNN 
class RNN(Chain): 
    def __init__(self): 
     super(RNN, self).__init__(
      lstm=L.LSTM(12, 50), # 
      # lstm2=L.LSTM(100, 100), 
      out=L.Linear(50, 1), # 
     ) 

    def reset_state(self): 
     self.lstm.reset_state() 
     #self.lstm2.reset_state() 

    def __call__(self, x): 
     h = self.lstm(x) 
     # h2 = self.lstm(h) 
     y = self.out(h2) 
     return y 

Fehler laufen: unindent keine äußeren Einzugsebene überein auf Zeile: h2 = self .lstm (h)

was macht mich falsch?

Antwort

0

Überprüfen Sie, ob Sie Ihre Tabulatoren mit Leerzeichen gemischt haben. Noch besser, gehen Sie zu Ihrer IDE und machen Sie Ihre Registerkarte, um Leerzeichen automatisch einzufügen. Ansonsten läuft dieser Code gut (nachdem ich alles importiert habe)