2016-04-26 4 views
2

У меня есть двухслойная сеть LSTM. (config.n_input is 3, config.n_steps is 5)Множественный слой RNN Tensorflow

Я думаю, что это может быть связано с формой моих входов, но я не уверен, как это исправить, я попытался изменить проекцию LSTM так что они будут одинакового размера ввода, но это не сработало.

 self.input_data = tf.placeholder(tf.float32, [None, config.n_steps, config.n_input], name='input') 

     # Tensorflow LSTM cell requires 2x n_hidden length (state & cell) 
     self.initial_state = tf.placeholder(tf.float32, [None, 2*config.n_hidden], name='state') 
     self.targets = tf.placeholder(tf.float32, [None, config.n_classes], name='target') 

     _X = tf.transpose(self.input_data, [1, 0, 2]) # permute n_steps and batch_size 
     _X = tf.reshape(_X, [-1, config.n_input]) # (n_steps*batch_size, n_input) 

     input_cell = rnn_cell.LSTMCell(num_units=config.n_hidden, input_size=3, num_proj=300, forget_bias=1.0) 
     print(input_cell.output_size) 
     inner_cell = rnn_cell.LSTMCell(num_units=config.n_hidden, input_size=300) 
     cells = [input_cell, inner_cell] 
     cell = rnn.rnn_cell.MultiRNNCell(cells) 

Он возвращает следующую ошибку при попытке ее запуска.

tensorflow.python.pywrap_tensorflow.StatusNotOK: Invalid argument: Expected size[1] in [0, 0], but got 600 
[[Node: RNN/MultiRNNCell/Cell1/Slice = Slice[Index=DT_INT32, T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/gpu:0"](_recv_state_0/_3, RNN/MultiRNNCell/Cell1/Slice/begin, RNN/MultiRNNCell/Cell1/Slice/size)]] 

любое превосходное объяснение сообщения об ошибке? Или есть способы легко исправить это?

ответ

0

Добавить num_proj к вашему исходному состоянию:

# Tensorflow LSTM cell requires 2x n_hidden length (state & cell) 
self.initial_state = tf.placeholder(tf.float32, [None, 2*config.n_hidden + 300], name='state') 

Это совершенно непрозрачный ошибка, и это может быть хорошей идеей, идеей для вас, чтобы поднять его на странице TF GitHub вопросов!

Смежные вопросы