tensorflow构建双向深层RNN

对于双向单层rnn,可以直接用tf.nn.bidirectional_dynamic_rnn()这个接口。但是,如果是深层双向,这个函数是有问题的,具体在这篇博客中解释了:https://blog.csdn.net/u012436149/article/details/71080601/  简单说就是:bi-rnn实际上是依靠dynamic-rnn实现的,如果我们使用MuitiRNNCell(多层rnn需要用这个函数)的话,那么每层之间不同方向之间交互就被忽略了.

所以,就像上面那篇博客自己写了个stacked_bidirectional_rnn函数一样,tensorflow的contrib里也有人贡献了

tf.contrib.rnn.stack_bidirectional_dynamic_rnn或者tf.contrib.rnn.stack_bidirectional_rnn这两个个函数(dynamic的是可以处理变长步长的函数),来快速搭建双向深层rnn,随着版本更新,现在不确定tf.nn.bidirectional_dynamic_rnn

是否已经支持深层双向,所以目前用contrib里面这个是最佳选择。

对于两个函数的使用,可以参考这篇博客:https://blog.csdn.net/lijin6249/article/details/78955175或https://www.jianshu.com/p/3540c6711d4f

猜你喜欢

转载自blog.csdn.net/qq_38258350/article/details/81005737