Существует несколько классов в tf.nn
, которые относятся к RNN. В примерах, которые я нахожу в сети, tf.nn.dynamic_rnn
и tf.nn.rnn
, кажется, используются взаимозаменяемо или, по крайней мере, я не могу понять, почему один используется вместо другого. В чем разница?В чем разница между tensorflow dynamic_rnn и rnn?
ответ
От RNNs in Tensorflow, a Practical Guide and Undocumented Features по Denny Britz, опубликованной в 21 августа, 2016.
tf.nn.rnn
создает развернутую диаграмму для фиксированной длины РНН. То, что означает, что вы вызываетеtf.nn.rnn
с входами, имеющими 200 временных шагов, вы являетесь , создавая статический график с 200 шагами RNN. Во-первых, создание графика slow. Во-вторых, вы не можете передать более длинные последовательности (> 200), чем , которые вы изначально указали.
tf.nn.dynamic_rnn
решает это. Он использует циклtf.While
для динамического вычисления при построении графика. Это означает, что создание графика - быстрее, и вы можете комбинировать партии переменного размера.
Зачем использовать статический RNN, если динамический RNN предоставляет все преимущества практически без каких-либо недостатков? –
Они почти одинаковы, но есть небольшая разница в структуре ввода и вывода. Из документации:
tf.nn.dynamic_rnn
Эта функция функционально идентична функции
rnn
выше, но> выполняет полностью динамический разворачивания входов.В отличие от
rnn
, входные входы не являются списком тензоров Python, один для каждого кадра. Вместо этого входы могут быть одним тензором, где максимальное время является либо первым, либо вторым измерением (см. Параметрtime_major
). В качестве альтернативы он может быть (возможно, вложенным) кортежем Тензоры, каждый из которых имеет соответствующие размеры партии и времени. Соответствующий выход представляет собой либо один Тензор, имеющий такое же число временных шагов и размера партии, либо (возможно, вложенный) набор таких тензоров , соответствующих вложенной структуреcell.output_size
.
Для получения дополнительной информации исследуйте source.
- 1. Тренировка тренировки RNN Tensorflow
- 2. Сложность в интерпретации вывода dynamic_rnn tensorflow
- 3. Получить последний выход dynamic_rnn в TensorFlow
- 4. Что значит развернуть RNN динамически?
- 5. Разница между TensorFlow Variable и тензором TensorFlow
- 6. В TensorFlow, в чем разница между Session.run() и Tensor.eval()?
- 7. В чем разница между шагами и эпохами в TensorFlow?
- 8. В чем разница между Variable и ResourceVariable в Tensorflow
- 9. В чем разница между tf.matmul и tf.batch_matmul в Tensorflow?
- 10. В Tensorflow, в чем разница между переменной и тензором?
- 11. dynamic_rnn() и array_ops.reverse_sequence() проблемы
- 12. Сохранение состояния LSTM RNN между запусками в Tensorflow
- 13. Tensorflow примеры RNN
- 14. Tensorflow Argmax: В чем разница между параметром «ось» и «размерность»?
- 15. Tensorflow - В чем разница между фигурами (8,1) и (8,)
- 16. Разница между переменной_scope и name_scope в TensorFlow
- 17. Ошибка среза Tensorflow RNN
- 18. Множественный слой RNN Tensorflow
- 19. tensorflow скопировать переменную в RNN
- 20. В чем разница между `tensorflow.nn.np` и` numpy`?
- 21. Создание настраиваемого RNN в Tensorflow
- 22. Почему результаты rnn и dynamic_rnn приводят к несоответствию в тензорном потоке?
- 23. Разделение памяти RNN равномерно между графическими процессорами в TensorFlow
- 24. В чем разница между xavier_initializer и xavier_initializer_conv2d?
- 25. Разница между переменной и get_variable в TensorFlow
- 26. TensorFlow: как использовать CudnnLSTM с переменной длиной ввода (например, dynamic_rnn)?
- 27. Инициализация весовых матриц Tensorflow RNN
- 28. Tensorflow Grid LSTM RNN TypeError
- 29. Регрессия RNN с использованием Tensorflow?
- 30. RNN-файл пропущен из tensorflow
См. Также это сообщение SO https://stackoverflow.com/q/42497216/3924118, где автор спрашивает об эквивалентной функции 'tf.nn.rnn' для более поздних версий TensorFlow, что, по-видимому, be 'tf.nn.static_rnn'. – nbro