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].