3

Существует не так много, чтобы сказать как введение: я хотел уложить LSTM на другой LSTM в TensorFlow, но продолжать по ошибке останавливаться, я не могу понять, не говоря уже о единоличном решении.TensorFlow: LSTM поверх другого LSTM

Вот код:

def RNN(_X, _istate, _istate_2, _weights, _biases): 

    _X = tf.transpose(_X, [1, 0, 2]) 
    _X = tf.reshape(_X, [-1, rozmiar_wejscia]) 
    _X = tf.matmul(_X, _weights['hidden']) + _biases['hidden'] 

    lstm_cell = rnn_cell.BasicLSTMCell(ukryta_warstwa, forget_bias=1.0) 
    _X = tf.split(0, liczba_krokow, _X) 

    outputs, states = rnn.rnn(lstm_cell, _X, initial_state=_istate) 


    lstm_cell_2 = rnn_cell.BasicLSTMCell(ukryta_warstwa, forget_bias = 1.0) 
    outputs2, states2 = rnn.rnn(lstm_cell_2, outputs, initial_state = _istate_2) 

    return tf.matmul(outputs2[-1], _weights['out']) + _biases['out'] 

И что я продолжаю получать это:

ValueError: Variable RNN/BasicLSTMCell/Linear/Matrix already exists, disallowed. Did you mean to set reuse=True in VarScope? 

указывая на линии с outputs2, государств2.Она

сброса график не помогает в малейшей , Если какая-либо дополнительная информация необходима для решения проблемы, я с удовольствием ее предоставил.

+0

также посмотреть на MultiRNNCell который позволяет вам складывать ячейки LSTM и может соответствовать вашим требованиям: https://www.tensorflow.org/versions/r0.9/api_docs/python/rnn_cell.html#MultiRNNCell –

+0

Возможный дубликат [Tensorflow: ошибка значения с переменной \ _scope] (http://stackoverflow.com/questions/39665702/tensorflow-value-error-with-variable-scope) –

ответ

2

RNN-код TensorFlow использует "variable scopes" для управления созданием и совместным использованием переменных, и в этом случае он не может определить, хотите ли вы создать новый набор переменных для второго RNN или повторно использовать старый набор переменных.

Предполагая, что вы хотите вес для два RNNs быть независимой, вы можете устранить эту ошибку, обернув каждый РНН в по-разному названием with tf.variable_scope(name): блока, следующим образом:

# ... 
with tf.variable_scope("first_lstm"): 
    lstm_cell = rnn_cell.BasicLSTMCell(ukryta_warstwa, forget_bias=1.0) 
    _X = tf.split(0, liczba_krokow, _X) 

    outputs, states = rnn.rnn(lstm_cell, _X, initial_state=_istate) 

with tf.variable_scope("second_lstm"): 
    lstm_cell_2 = rnn_cell.BasicLSTMCell(ukryta_warstwa, forget_bias=1.0) 
    outputs2, states2 = rnn.rnn(lstm_cell_2, outputs, initial_state=_istate_2) 
# ... 
+0

спасибо, это сработало;) – user3132736

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