在使用seq2seq时,tf.nn.dynamic_rnn如何使用不同长度的输入?

时间:2017-06-06 16:54:00

标签: tensorflow deep-learning

我在这里询问动态行为是如何工作的。 这是上面的dynamic_rnn函数的张量流documentation。此功能创建的RNN输入块的最大长度是多少?它是否会根据最大输入填充所有较短的?

1 个答案:

答案 0 :(得分:4)

您有责任填充序列,然后提供序列长度。

例如:

# Create input data
X = np.random.randn(2, 10, 8)

# The second example is of length 6 
X[1,6:] = 0
X_lengths = [10, 6]

cell = tf.nn.rnn_cell.LSTMCell(num_units=64, state_is_tuple=True)

outputs, last_states = tf.nn.dynamic_rnn(
    cell=cell,
    dtype=tf.float64,
    sequence_length=X_lengths,
    inputs=X)

在这里你可以看到,我们自己填充序列X[1,6:] = 0将为第6个元素之后的所有值赋值0,这意味着这个序列长度为6,我们通过给出X_lengths来说明第二个值是值6