Кодировщик переменной / basic_lstm_cell / kernel не существует или не был создан с помощью tf.get_variable () - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь повторно использовать ранее определенную ячейку LSTM в модели обучения с несколькими задачами, однако мне не удается разрешить ошибку ValueError, с которой я сталкиваюсь

Попытка использования tf.AUTOREUSE в ячейке lstm и добавление функции scope tf dynamic rnn. Я также опубликовал ошибку вместе с текущим фрагментом кода

Мне нужен способ, чтобы моя сеть использовала один и тот же слой LSTM для нескольких задач

def LSTM_parser(self, sequence_in, lstm_sizes, keep_prob_, batch_size, biLSTM=False): 

    with tf.variable_scope("encoder") as scope:
                  cell = tf.contrib.rnn.BasicLSTMCell(self.lstm_dim, reuse=tf.AUTO_REUSE)
                  initial_state = cell.zero_state(batch_size, tf.float64)
                  lstm_output_1, final_state_1 = tf.nn.dynamic_rnn(cell, sequence_in, initial_state=initial_state,scope=scope)                        
            return (lstm_output_1, final_state_1)

#Error:
output_data, final_state = build.LSTM_parser(sequence_in, lstm_size, keep_prob_, batch_size=batch_size, biLSTM=False)


ValueError: Variable encoder/basic_lstm_cell/kernel does not exist, or was not created with tf.get_variable(). Did you mean to set reuse=tf.AUTO_REUSE in VarScope?
...