tf.compat.v1.nn.bidirectional_dynamic_rnn
Создаёт динамическую версию двунаправленной рекуррентной нейронной сети. (устарело)
tf.compat.v1.nn.bidirectional_dynamic_rnn(
cell_fw,
cell_bw,
inputs,
sequence_length=None,
initial_state_fw=None,
initial_state_bw=None,
dtype=None,
parallel_iterations=None,
swap_memory=False,
time_major=False,
scope=None
)
Принимает входные данные и строит независимые прямые и обратные RNN. Размер входных данных для прямого и обратного ячеек должен совпадать. Начальное состояние для обоих направлений по умолчанию равно нулю (но может быть задано необязательно), и промежуточные состояния никогда не возвращаются — сеть полностью развернута для заданной (переданной) длины(длин) последовательности(ей) или полностью развернута, если длина(ы) не задана(ы).
| Аргументы | |
|---|---|
cell_fw | Экземпляр RNNCell, используемый для прямого направления. |
cell_bw | Экземпляр RNNCell, используемый для обратного направления. |
inputs | Входные данные RNN. Если time_major == False (по умолчанию), это должен быть тензор формы: [batch_size, max_time, ...] или вложенная кортеж таких элементов. Если time_major == True, это должен быть тензор формы: [max_time, batch_size, ...] или вложенная кортеж таких элементов. |
sequence_length | (необязательно) Вектор int32/int64, размер [batch_size], содержащий фактическую длину каждой последовательности в пакете. Если не предоставлено, предполагается, что все элементы пакета являются полными последовательностями; и обратный порядок времени применяется от времени 0 до max_time для каждой последовательности. |
initial_state_fw | (необязательно) Начальное состояние для прямого RNN. Это должен быть тензор соответствующего типа и формы [batch_size, cell_fw.state_size]. Если cell_fw.state_size является кортежем, это должен быть кортеж тензоров с формами [batch_size, s] for s in cell_fw.state_size. |
initial_state_bw | (необязательно) То же, что и для initial_state_fw, но с соответствующими свойствами cell_bw. |
dtype | (необязательно) Тип данных для начальных состояний и ожидаемого вывода. Требуется, если начальные состояния не предоставлены или состояния RNN имеют разнородный тип данных. |
parallel_iterations | (По умолчанию: 32). Количество итераций для параллельной работы. Операции, не имеющие временной зависимости и которые могут быть выполнены параллельно, будут. Этот параметр меняет время на место. Значения >> 1 используют больше памяти, но занимают меньше времени, в то время как меньшие значения используют меньше памяти, но вычисления занимают больше времени. |
swap_memory | Прозрачно меняет местами тензоры, полученные в прямом выводе, но необходимые для обратного распространения из GPU в CPU. Это позволяет обучать RNN, которые обычно не помещаются на одном GPU, с очень небольшими (или без) потерями производительности. |
time_major | Формат формы тензоров inputs и outputs. Если true, эти Tensors должны быть формы [max_time, batch_size, depth]. Если false, эти Tensors должны быть формы [batch_size, max_time, depth]. Использование time_major = True немного эффективнее, потому что это избегает транспонирования в начале и в конце вычисления RNN. Однако большинство данных TensorFlow являются пакетно-главными, поэтому по умолчанию эта функция принимает входные данные и выводит выходные данные в пакетно-главной форме. |
scope | VariableScope для созданного подграфа; по умолчанию "bidirectional_rnn" |
| Возвращаемые значения | |
|---|---|
Кортеж (выходы, состояния_выхода), где: выходы: Кортеж (выход_прямой, выход_обратный), содержащий прямой и обратный выход rnn Tensor. Если time_major == False (по умолчанию), output_fw будет Tensor формы: [batch_size, max_time, cell_fw.output_size], а output_bw будет Tensor формы: [batch_size, max_time, cell_bw.output_size]. Если time_major == True, output_fw будет Tensor формы: [max_time, batch_size, cell_fw.output_size], а output_bw будет Tensor формы: [max_time, batch_size, cell_bw.output_size]. Он возвращает кортеж, а не один конкатенированный Tensor, в отличие от bidirectional_rnn. Если предпочтительнее конкатенированный, прямой и обратный выходы можно конкатенировать как tf.concat(outputs, 2). состояния_выхода: Кортеж (состояние_выхода_прямой, состояние_выхода_обратное), содержащий конечные состояния прямого и обратного двунаправленного rnn. |
| Исключения | |
|---|---|
TypeError | Если cell_fw или cell_bw не является экземпляром RNNCell. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/compat/v1/nn/bidirectional_dynamic_rnn