TensorFlow:如何使用具有可变输入长度的CudnnLSTM(如dynamic_rnn)?

mel*_*r89 6 lstm tensorflow cudnn

我想加速我的LSTM网络,但是当我将它用于OCR(序列具有可变长度)时,我不能使用普通的LSTM实现.这就是我使用"tf.nn.dynamic_rnn"的原因.

基于张量流中的RNN基准(https://github.com/tensorflow/tensorflow/blob/754048a0453a04a761e112ae5d99c149eb9910dd/tensorflow/contrib/cudnn_rnn/python/kernel_tests/cudnn_rnn_ops_benchmark.py#L77),CUDNN实现用于创建所有模型立刻(它不像其他人那样使用"tf.nn.rnn"结构).我假设可能不可能使用可变长度的CUDNN,但也许任何人都成功了吗?

其次,这是使用"tf.nn.bidirectional_dynamic_rnn",因为我想将Bi-LSTM用于OCR.但是在实施第一部分之后应该解决这个问题.

编辑:看起来"tf.contrib.cudnn_rnn.CudnnLSTM"里面有"双向"实现.所以唯一未知的是CUDNN可以与变量输入序列一起使用.

或许任何使用'CudnnLSTM'的工作示例都会有所帮助.

小智 6

刚发现这个:

tf.contrib.cudnn_rnn.CudnnLSTM当前不支持具有不同长度序列的批处理,因此通常不能使用此选项.

资料来源:http://returnn.readthedocs.io/en/latest/tf_lstm_benchmark.html