tf.contrib.rnn.stack_bidirectional_dynamic_rnn
Создаёт динамическую двунаправленную рекуррентную нейронную сеть.
tf.contrib.rnn.stack_bidirectional_dynamic_rnn(
cells_fw, cells_bw, inputs, initial_states_fw=None, initial_states_bw=None,
dtype=None, sequence_length=None, parallel_iterations=None, time_major=False,
scope=None, swap_memory=False
)
Упаковывает несколько двунаправленных слоёв rnn. Объединённые выходы прямого и обратного слоёв используются в качестве входных данных следующего слоя. tf.bidirectional_rnn не позволяет совместно использовать информацию между слоями прямого и обратного направления. Размеры входных данных для первых ячеек прямого и обратного направления должны совпадать. Начальное состояние для обоих направлений равно нулю, и промежуточные состояния не возвращаются.
| Аргументы | |
|---|---|
cells_fw | Список экземпляров RNNCell, по одному на слой, используемых для прямого направления. |
cells_bw | Список экземпляров RNNCell, по одному на слой, используемых для обратного направления. |
inputs | Входные данные RNN. Это должен быть тензор формы: [batch_size, max_time, ...], или вложенная кортеж таких элементов. |
initial_states_fw | (необязательно) Список начальных состояний (по одному на слой) для RNN прямого направления. Каждый тензор должен иметь соответствующий тип и форму [batch_size, cell_fw.state_size]. |
initial_states_bw | (необязательно) Аналогично initial_states_fw, но использует соответствующие свойства cells_bw. |
dtype | (необязательно) Тип данных для начального состояния. Требуется, если любое из начальных состояний не задано. |
sequence_length | (необязательно) Вектор int32/int64, размер [batch_size], содержащий фактические длины каждой последовательности. |
parallel_iterations | (по умолчанию: 32). Количество итераций, выполняемых параллельно. Те операции, которые не зависят во времени и могут быть выполнены параллельно, будут. Этот параметр балансирует время и память. Значения >> 1 используют больше памяти, но занимают меньше времени, а меньшие значения используют меньше памяти, но вычисления занимают больше времени. |
time_major | Формат формы тензоров входных и выходных данных. Если true, эти тензоры должны иметь форму [max_time, batch_size, depth]. Если false, эти тензоры должны иметь форму [batch_size, max_time, depth]. Использование time_major = True немного эффективнее, потому что оно избегает транспонирования в начале и в конце вычисления RNN. Однако большинство данных TensorFlow имеют форму batch-major, поэтому по умолчанию эта функция принимает входные данные и выводит выходные данные в форме batch-major. |
scope | VariableScope для созданной подсети; по умолчанию None. |
swap_memory | Прозрачно меняет местами тензоры, полученные при прямом выводе, но необходимые для обратного распространения, с GPU на CPU. Это позволяет обучать RNN, которые обычно не помещаются на одном GPU, с минимальной (или без) потерей производительности. |
| Возвращает | |
|---|---|
Кортеж (outputs, output_state_fw, output_state_bw), где: outputs: Выход Tensor формы: [batch_size, max_time, layers_output]. Где выходы слоёв конкатенированы по глубине, в прямом и обратном направлениях. output_states_fw - конечные состояния, по одному тензору на слой, RNN прямого направления. output_states_bw - конечные состояния, по одному тензору на слой, RNN обратного направления. |
| Возбуждает исключения | |
|---|---|
TypeError | Если cell_fw или cell_bw не является экземпляром RNNCell. |
ValueError | Если inputs - None. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/contrib/rnn/stack_bidirectional_dynamic_rnn