Tensorflow tf.nn.双向\u动态\u rnn输入序列\u长度

Tensorflow tf.nn.双向\u动态\u rnn输入序列\u长度,tensorflow,Tensorflow,我编写了一个示例来测试rnn在tensorflow中的用法,并且遇到了参数sequence\u length的问题。如果删除参数sequence\u length,代码将正常运行。那么,设置序列长度的正确方法是什么呢。这让我很困惑,因为我已经按照batch\u size、num\u steps和embedded\u size的顺序设置了sequence\u length。非常感谢你的回答 误差如下所示: sequence_size = [4, 2, 3] ### batch_size:4 nu

我编写了一个示例来测试
rnn
在tensorflow中的用法,并且遇到了参数
sequence\u length
的问题。如果删除参数
sequence\u length
,代码将正常运行。那么,设置序列长度的正确方法是什么呢。这让我很困惑,因为我已经按照
batch\u size
num\u steps
embedded\u size
的顺序设置了
sequence\u length
。非常感谢你的回答

误差如下所示:

sequence_size = [4, 2, 3] ### batch_size:4  num_steps:2  embedding_size: 3
num_units = 2
dummy_sequences = np.array([[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]],
                            [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]],
                            [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]],
                            [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]])
fw_cell = tf.nn.rnn_cell.BasicLSTMCell(num_units)
bw_cell = tf.nn.rnn_cell.BasicLSTMCell(num_units)

inputs = tf.placeholder(dtype=tf.float64, shape=sequence_size)
encoder_outputs, encoder_state = tf.nn.bidirectional_dynamic_rnn(cell_fw=fw_cell, cell_bw=bw_cell,
                                                                 inputs=inputs, sequence_length=sequence_size,
                                                                 dtype=tf.float64)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    output, state = sess.run([encoder_outputs, encoder_state], feed_dict={inputs: dummy_sequences})
    print(output, state)

参数
sequence\u length
要求在上面的示例中,每个样本应处理的时间步数为-
num\u步数<代码>序列长度
必须是长度向量
批量大小

这不是输入的形状。假设您的输入如
伪序列中所示,即
[4,2,3]
。您有4个样本,2个时间步长,每个样本由3个值表示

因此,您的
序列长度是[2,2,2,2]。如果所有样本长度相同,可以忽略此参数。否则,在达到每个样本的最大时间步后,网络将为每个样本的每个时间步输出零矢量输出

ValueError: Dimension 0 in both shapes must be equal, but are 3 and 4 for 'bidirectional_rnn/fw/fw/while/Select' (op: 'Select') with input shapes: [3], [?,2], [4,2].