【发布时间】:2017-06-22 15:25:47
【问题描述】:
我的理解是tf.nn.dynamic_rnn 在每个时间步返回一个 RNN 单元(例如 LSTM)的输出以及最终状态。我如何才能在所有时间步骤中访问单元状态,而不仅仅是最后一个?例如,我希望能够对所有隐藏状态进行平均,然后在后续层中使用它。
以下是我如何定义一个 LSTM 单元,然后使用 tf.nn.dynamic_rnn 展开它。但这仅给出了 LSTM 的最后一个单元状态。
import tensorflow as tf
import numpy as np
# [batch-size, sequence-length, dimensions]
X = np.random.randn(2, 10, 8)
X[1,6:] = 0
X_lengths = [10, 6]
cell = tf.contrib.rnn.LSTMCell(num_units=64, state_is_tuple=True)
outputs, last_state = tf.nn.dynamic_rnn(
cell=cell,
dtype=tf.float64,
sequence_length=X_lengths,
inputs=X)
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
out, last = sess.run([outputs, last_state], feed_dict=None)
【问题讨论】:
-
没有理由需要访问不属于输出的内部状态。如果这是您的用例,我希望定义一个与 LSTM 相同但输出其完整状态的 RNN。
标签: python tensorflow