Как правильно выбрать API / реализацию ячейки LSTM в TensorFlow? - PullRequest
0 голосов
/ 28 ноября 2018

В Tensorflow есть много разных реализаций одной и той же задачи под разными API.Для ячейки LSTM можно найти множество реализаций, например,

  1. tf.nn.rnn_cell.LSTMCell
  2. tf.contrib.rnn.LSTMBlockCell
  3. tf.keras.layers.LSTMCell
  4. tf.keras.layers.LSTM

Какиеиз вышеупомянутой реализации я должен выбрать?Есть ли общие рекомендации?Например, всегда используйте tf.nn> tf.keras> tf.layers> tf.contrib.

В слегка связанном вопросе здесь (для пакетной нормализации) утвержденный ответ говорит, что tf.contrib не является хорошим выбором, как для ранней реализации.При этом API KERAS также использует tf.nn.Так что это выглядит как tf.nn> tf.keras> tf.contrib.

1 Ответ

0 голосов
/ 28 ноября 2018

Здесь Производительность RNN - некоторые рекомендации для TensorFlow.Несколько важных моментов из документа:

  • используйте tf.contrib.cudnn_rnn() на графических процессорах NVIDIA;
  • используйте tf.nn.dynamic_rnn() вместо tf.nn.static_rnn().Возможно, это означает, что нам нужно добавить sequence_length, чтобы избежать дополнительных вычислений.
...