2016-11-07 3 views
6

Привет Я использую следующую функцию для ячейки lstm rnn.Тензорный поток - LSTM - Объект «Tensor» не повторяется

def LSTM_RNN(_X, _istate, _weights, _biases): 
    # Function returns a tensorflow LSTM (RNN) artificial neural network from given parameters. 
    # Note, some code of this notebook is inspired from an slightly different 
    # RNN architecture used on another dataset: 
    # https://tensorhub.com/aymericdamien/tensorflow-rnn 

    # (NOTE: This step could be greatly optimised by shaping the dataset once 
    # input shape: (batch_size, n_steps, n_input) 
    _X = tf.transpose(_X, [1, 0, 2]) # permute n_steps and batch_size 

    # Reshape to prepare input to hidden activation 
    _X = tf.reshape(_X, [-1, n_input]) # (n_steps*batch_size, n_input) 

    # Linear activation 
    _X = tf.matmul(_X, _weights['hidden']) + _biases['hidden'] 

    # Define a lstm cell with tensorflow 
    lstm_cell = rnn_cell.BasicLSTMCell(n_hidden, forget_bias=1.0) 


    # Split data because rnn cell needs a list of inputs for the RNN inner loop 
    _X = tf.split(0, n_steps, _X) # n_steps * (batch_size, n_hidden) 

    # Get lstm cell output 
    outputs, states = rnn.rnn(lstm_cell, _X, initial_state=_istate) 

    # Linear activation 
    # Get inner loop last output 
    return tf.matmul(outputs[-1], _weights['out']) + _biases['out'] 

Выход функции хранится в переменной pred.

pred = LSTM_RNN(x, istate, weights, biases)

Но его показ следующее сообщение об ошибке. (В котором говорится, что тензор объект не итерация.)

Вот ссылка ERROR изображения - http://imgur.com/a/NhSFK

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

Спасибо.

+0

его команда изменения, проверьте, что http://stackoverflow.com/questions/33884978/build-a-graph-that-works-with-variable-batch-size-using-tensorflow –

+0

, но Команда reshape необходима для преобразования в требуемую форму. –

+0

уверен, попробуйте с tf.reshape (x, tf.pack (n_input, -1])) –

ответ

6

Ошибка произошла, когда она пытается распаковать state с заявлением c, h=state. В зависимости от используемой вами версии tensorflow (вы можете проверить информацию о версии, введя import tensorflow; tensorflow.__version__ в интерпретаторе python), в версии до r0.11 значение по умолчанию для аргумента state_is_tuple при инициализации rnn_cell.BasicLSTMCell(n_hidden, forget_bias=1.0) установлено равным False. См. Здесь documentation.

BasicLSTMCell documentation in r0.10

С tensorflow версии r0.11 (или мастер-версии), значение по умолчанию для state_is_tuple установлен быть True. См. Здесь documentation.

BasicLSTMCell documentation in r0.11

Если вы установили r0.11 или мастер-версию tensorflow, попробуйте изменить BasicLSTMCell строку инициализации в: lstm_cell = rnn_cell.BasicLSTMCell(n_hidden, forget_bias=1.0, state_is_tuple=False). Ошибка, с которой вы сталкиваетесь, должна исчезнуть. Хотя, их страница говорит, что поведение state_is_tuple=False будет устаревшим.

BasicLSTMCell state_is_tuple argument documentation

3

я случайно встретил тот же вопрос в то же время. я просто описать мое обстоятельство, которое может сделать помощь для и

это государственный, как следовать

c1_ex, T1_ex = tf. ones(10,tf. int 32) 
raise Type Error ... 

Я считаю, что левая сторона «=» были установлены два имени вектора заранее

время с другой стороны просто возвращает вектор

простите за мой неэффективности английского

ваша проблема на самом деле появляются в строке 146 не строка 193

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

  • Нет связанных вопросов^_^