2016-10-27 3 views
4

Ich möchte mein LSTM-Netzwerk beschleunigen, aber da ich es für eine OCR verwende (wo Sequenzen variable Länge haben), kann ich keine einfache LSTM-Implementierung verwenden. Deshalb verwende ich "tf.nn.dynamic_rnn".TensorFlow: Wie benutzt man CudnnLSTM mit variabler Eingangslänge (wie dynamic_rnn)?

Basierend auf dem Benchmark von RNN in Tensorflow (https://github.com/tensorflow/tensorflow/blob/754048a0453a04a761e112ae5d99c149eb9910dd/tensorflow/contrib/cudnn_rnn/python/kernel_tests/cudnn_rnn_ops_benchmark.py#L77) wird die CUDNN-Implementierung für die Erstellung aller Modelle auf einmal verwendet (es verwendet nicht die Struktur "tf.nn.rnn" wie andere). Ich nehme an, dass es vielleicht unmöglich ist, CUDNN mit variabler Länge zu verwenden, aber vielleicht jemand Erfolg?

Zweitens ist dies "tf.nn.bidirektional_dynamic_rnn", wie ich Bi-LSTM für OCR verwenden möchte. Dies sollte jedoch nach der Implementierung des ersten Teils gelöst werden.

Edit: Es sieht aus wie "tf.contrib.cudnn_rnn.CudnnLSTM" haben "bidirektionale" Implementierung im Inneren. Das einzige Unbekannte ist, dass CUDNN mit variabler Eingabesequenz verwendet werden kann.

Oder vielleicht irgendein Arbeitsbeispiel, das "CudnnLSTM" verwendet, wäre hilfreich.

+0

Werfen Sie einen Blick auf die Tests für die CudnnLSTM Betreiber hier: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/cudnn_rnn/python/kernel_tests/ cudnn_rnn_ops_test.py. Helfen sie bei der Beantwortung Ihrer Frage? –

Antwort