2

我正在使用 TensorFlow 来实现 RNN。我这样创建循环单元:

gru_cell = tf.contrib.rnn.GRUCell(16)
zero_state = gru_cell.zero_state(1, tf.float32)
initial_state = tf.placeholder(tf.float32, zero_state.get_shape())
out_tensor, final_state = tf.nn.dynamic_rnn(
    gru_cell,
    parent_tensor,
    initial_state=initial_state,
    time_major=False)
print(out_tensor.get_shape())

(1, ?, 16)正如我所期望的那样,它将输出形状报告为。第二个维度是?因为max_time未知。

现在我将其切换到time_major=True. 根据文档,我希望只交换前两个轴,所以输出形状应该是(?, 1, 16). 但事实并非如此。相反,它是(1, 1, 16). 这是怎么回事? max_time仍然未知,那么为什么将其硬编码为1?

4

1 回答 1

0

来自 Tesnorflow 文档,https: //www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn

在此处输入图像描述

根据上面,现在你的 max_time = 1,batch_size =?,input_size= 16

现在根据文档, 在此处输入图像描述

你的输出应该是 (1,?,16) 的形状。

于 2017-10-07T12:48:50.520 回答