Python 3.x Tensorflow中具有LSTM的多层RNN
我用Python(3.6版)在Tensorflow(1.5版)中用LSTM编写了一个单层RNN。我想向这个RNN添加3个隐藏层(即一个输入层、一个输出层和三个隐藏层)。我已经读过关于单元格的状态、堆栈、取消堆栈等内容,但我仍然不知道如何将这些内容组合起来并升级我的代码。下面是我在单层RNN中的代码。你能帮我升级代码吗(注意:我对Tensorflow和Python非常陌生:)。 `Python 3.x Tensorflow中具有LSTM的多层RNN,python-3.x,tensorflow,lstm,recurrent-neural-network,multi-layer,Python 3.x,Tensorflow,Lstm,Recurrent Neural Network,Multi Layer,我用Python(3.6版)在Tensorflow(1.5版)中用LSTM编写了一个单层RNN。我想向这个RNN添加3个隐藏层(即一个输入层、一个输出层和三个隐藏层)。我已经读过关于单元格的状态、堆栈、取消堆栈等内容,但我仍然不知道如何将这些内容组合起来并升级我的代码。下面是我在单层RNN中的代码。你能帮我升级代码吗(注意:我对Tensorflow和Python非常陌生:)。 ` 下面是适合我的代码。查看此主题的更多信息。动态rnn处理状态和输入的传递 def rnn_cell():
下面是适合我的代码。查看此主题的更多信息。动态rnn处理状态和输入的传递
def rnn_cell():
return tf.contrib.rnn.BasicRNNCell(num_units=num_hidden, activation=tf.nn.softsign)
self.stacked_rnn = tf.contrib.rnn.MultiRNNCell([rnn_cell() for _ in range(num_layers)])
final_outputs, final_state = tf.nn.dynamic_rnn(cell=self.stacked_rnn,
inputs=self.input_x,
dtype=tf.float32)
如果您想要更高的可视性,可以按照上面链接中的示例进行操作
def lstm_cell():
return tf.contrib.rnn.BasicLSTMCell(lstm_size)
stacked_lstm = tf.contrib.rnn.MultiRNNCell(
[lstm_cell() for _ in range(number_of_layers)])
initial_state = state = stacked_lstm.zero_state(batch_size, tf.float32)
for i in range(num_steps):
# The value of state is updated after processing each batch of words.
output, state = stacked_lstm(words[:, i], state)
# The rest of the code.
# ...
final_state = state
看这篇文章,我知道多层RNN背后的想法是什么,但我不知道如何分配状态,如何将一层的输出传输到另一层的输入,以及如何使用包、解包@Devstr
def lstm_cell():
return tf.contrib.rnn.BasicLSTMCell(lstm_size)
stacked_lstm = tf.contrib.rnn.MultiRNNCell(
[lstm_cell() for _ in range(number_of_layers)])
initial_state = state = stacked_lstm.zero_state(batch_size, tf.float32)
for i in range(num_steps):
# The value of state is updated after processing each batch of words.
output, state = stacked_lstm(words[:, i], state)
# The rest of the code.
# ...
final_state = state