TensorFlow双向CudnnGRU模棱两可的最终状态格式

时间:2018-07-16 16:38:22

标签: python tensorflow cudnn

tf.contrib.cudnn_rnn.CudnnGRU的{​​{3}}指出call返回rnn_output, rnn_state。 RNN状态是一个元组,在非LSTM情况(例如GRU)中,它具有单个元素-形状为[num_layers * num_dirs, batch_size, num_units]的张量(对于双向GRU,这里的num_dirs为2)。但是,文档没有指定外形的顺序。

简而言之,给定一个n层双向GRU,该张量[final_state_fw_1, ..., final_state_fw_n, final_state_bw_1, ..., final_state_bw_n] 要么 [final_state_fw_1, final_state_bw_1, ..., final_state_fw_n, final_state_bw_n]吗?

1 个答案:

答案 0 :(得分:0)

格式如下:

[final_state_fw_1, final_state_bw_1, ..., final_state_fw_n, final_state_bw_n]

我通过编写测试两个操作并比较结果的代码来验证了这一点。拆解我认为正确的方法会产生〜10 ^ -15阶的浮点错误,反之则产生明显的错误。

请参见this gist进行复制和验证(需要具有支持CUDA的GPU的设备)。