Eğitimli bir LSTM modeli verildiği zaman, aşağıdaki örnekte tekli zamanlamalar için, yani seq_length = 1
çıkarım yapmak istiyorum. Her zaman diliminden sonra, bir sonraki 'parti' için dahili LSTM (hafıza ve gizli) durumların hatırlanması gerekir. Çıkarımın başlangıcında, iç LSTM durumları init_c, init_h
girilerek hesaplanır. Bunlar daha sonra LSTM'ye iletilen LSTMStateTuple
nesnesinde depolanır. Eğitim sırasında bu durum her zaman güncellenir. Bununla birlikte, çıkarım için, state
'un partiler arasında saklanmasını istiyorum, yani başlangıç durumlarının sadece en baştan hesaplanması gerekir ve bundan sonra LSTM durumlarının her bir 'batch' (n = 1) 'den sonra kaydedilmesi gerekir.TensorFlow: Sonraki toplu iş için LSTM durumunu hatırla (durum bilgisi olan LSTM)
Bu ilgili StackOverflow sorusunu buldum: Tensorflow, best way to save state in RNNs?. Ancak, bu yalnızca state_is_tuple=False
ise çalışır, ancak bu davranış yakında TensorFlow tarafından kullanımdan kaldırılacaktır (bkz. rnn_cell.py). Keras, durum bilgisi olan LSTM'leri mümkün kılmak için iyi bir sarıcıya sahip gibi görünüyor, ancak bunu TensorFlow'da başarmanın en iyi yolunu bilmiyorum. TensorFlow GitHub'dan Bu sorun benim soruya ilişkilidir: https://github.com/tensorflow/tensorflow/issues/2838
Herkes iyi öneri bir durum bilgisi LSTM modeli inşa etmek?
inputs = tf.placeholder(tf.float32, shape=[None, seq_length, 84, 84], name="inputs")
targets = tf.placeholder(tf.float32, shape=[None, seq_length], name="targets")
num_lstm_layers = 2
with tf.variable_scope("LSTM") as scope:
lstm_cell = tf.nn.rnn_cell.LSTMCell(512, initializer=initializer, state_is_tuple=True)
self.lstm = tf.nn.rnn_cell.MultiRNNCell([lstm_cell] * num_lstm_layers, state_is_tuple=True)
init_c = # compute initial LSTM memory state using contents in placeholder 'inputs'
init_h = # compute initial LSTM hidden state using contents in placeholder 'inputs'
self.state = [tf.nn.rnn_cell.LSTMStateTuple(init_c, init_h)] * num_lstm_layers
outputs = []
for step in range(seq_length):
if step != 0:
scope.reuse_variables()
# CNN features, as input for LSTM
x_t = # ...
# LSTM step through time
output, self.state = self.lstm(x_t, self.state)
outputs.append(output)
Olası kopyası [Tensorflow, RNN'lerde durumu kaydetmenin en iyi yolu nedir?] (Http://stackoverflow.com/questions/37969065/tensorflow-best-way-to-save-state-in-rnns) –