2016-03-25 9 views
0

Zu Lernzwecken möchte ich ein eigenes LSTM-Modell in Tensorflow erstellen. Das Problem ist, wie man trainiert, dass die Zustände zu einem bestimmten Zeitschritt mit den Zuständen aus dem vorherigen Zeitschritt initialisiert werden. Gibt es dafür im Tensorflow einen Mechanismus?Wie verwende ich den letzten Zustand einer Variablen als nächsten Zustand in Tensorflow?

class Lstm: 

    def __init__(self, x, steps): 
     self.initial = tf.placeholder(tf.float32, [None, size]) 
     self.state = self.initial 
     for _ in range(steps): 
      x = self.layer_lstm(x, 100) 
     x = self.layer_softmax(x, 10) 
     self.prediction = x 

    def step_lstm(self, x, size): 
     stream = self.layer(x, size) 
     input_ = self.layer(x, size) 
     forget = self.layer(x, size, bias=1) 
     output = self.layer(x, size) 
     self.state = stream * input_ + self.state * forget 
     x = self.state * output 
     return x 

    def layer_softmax(self, x, size): 
     x = self.layer(x, size) 
     x = tf.nn.softmax(x) 
     return x 

    def layer(self, x, size, bias=0.1): 
     in_size = int(x.get_shape()[1]) 
     weight = tf.Variable(tf.truncated_normal([in_size, size], stddev=0.1)) 
     bias = tf.Variable(tf.constant(bias, shape=[size])) 
     x = tf.matmul(x, weight) + bias 
     return x 

Antwort

0

@danijar - Sie können von dem ‚Variablen‘ aussehen wollen Abschnitt this page für ein einfaches Beispiel, wie Zustand über Anrufe zu einem Subgraphen zu halten.

Verwandte Themen