Tensor Flow - LSTM - объект Tensor не повторяется
Привет, я использую следующую функцию для lstm rnn cell.
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)
Но это показывает следующую ошибку. (в котором говорится, что тензорный объект не повторяется.)
Вот ссылка на изображение ОШИБКИ - http://imgur.com/a/NhSFK
Пожалуйста, помогите мне с этим, и я прошу прощения, если этот вопрос кажется глупым, поскольку я довольно плохо знаком с библиотекой потока lstm и тензор.
Благодарю.
2 ответа
Произошла ошибка при попытке распаковать state
с заявлением c, h=state
, В зависимости от того, какую версию tenorflow вы используете (вы можете проверить информацию о версии, набрав import tensorflow; tensorflow.__version__
в интерпретаторе Python), в версии до r0.11, настройка по умолчанию для state_is_tuple
аргумент, когда вы инициализируете rnn_cell.BasicLSTMCell(n_hidden, forget_bias=1.0)
установлено быть False
, Смотрите документацию здесь.
Начиная с версии tenorflow r0.11 (или основной версии), настройка по умолчанию для state_is_tuple
установлено быть True
, Смотрите документацию здесь.
Если вы установили r0.11 или основную версию tenorflow, попробуйте изменить BasicLSTMCell
Строка инициализации в:lstm_cell = rnn_cell.BasicLSTMCell(n_hidden, forget_bias=1.0, state_is_tuple=False)
, Ошибка, с которой вы столкнулись, должна исчезнуть. Хотя на их странице написано, что state_is_tuple=False
поведение будет устаревшим в ближайшее время.
Я случайно встретил один и тот же вопрос. Я просто опишу мои обстоятельства, которые могут помочь вам
это заявить, как следует
c1_ex, T1_ex = tf. ones(10,tf. int 32)
raise Type Error ...
Я считаю, что левой стороне '=' были заранее установлены два имени вектора
в то время как другая сторона просто вернуть вектор
извините за неэффективность английского языка
ваша проблема на самом деле появляется в строке 146, а не в строке 193