Spec-Zone.ru › TensorFlow 2.4

tf.compat.v1.nn.dynamic_rnn

Создаёт рекуррентную нейронную сеть, заданную RNNCell cell. (устарело)

tf.compat.v1.nn.dynamic_rnn(
    cell, inputs, sequence_length=None, initial_state=None, dtype=None,
    parallel_iterations=None, swap_memory=False, time_major=False, scope=None
)
Предупреждение: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена в будущей версии. Инструкции по обновлению: Используйте keras.layers.RNN(cell), что эквивалентно этому API

Выполняет полностью динамическое развертывание inputs.

Пример:

# create a BasicRNNCell
rnn_cell = tf.compat.v1.nn.rnn_cell.BasicRNNCell(hidden_size)

# 'outputs' is a tensor of shape [batch_size, max_time, cell_state_size]

# defining initial state
initial_state = rnn_cell.zero_state(batch_size, dtype=tf.float32)

# 'state' is a tensor of shape [batch_size, cell_state_size]
outputs, state = tf.compat.v1.nn.dynamic_rnn(rnn_cell, input_data,
                                   initial_state=initial_state,
                                   dtype=tf.float32)
# create 2 LSTMCells
rnn_layers = [tf.compat.v1.nn.rnn_cell.LSTMCell(size) for size in [128, 256]]

# create a RNN cell composed sequentially of a number of RNNCells
multi_rnn_cell = tf.compat.v1.nn.rnn_cell.MultiRNNCell(rnn_layers)

# 'outputs' is a tensor of shape [batch_size, max_time, 256]
# 'state' is a N-tuple where N is the number of LSTMCells containing a
# tf.nn.rnn_cell.LSTMStateTuple for each cell
outputs, state = tf.compat.v1.nn.dynamic_rnn(cell=multi_rnn_cell,
                                   inputs=data,
                                   dtype=tf.float32)
Аргументы
cell Экземпляр RNNCell.
inputs Входные данные RNN. Если time_major == False (по умолчанию), это должен быть Tensor формы: [batch_size, max_time, ...], или вложенная кортеж таких элементов. Если time_major == True, это должен быть Tensor формы: [max_time, batch_size, ...], или вложенная кортеж таких элементов. Это также может быть (возможно, вложенный) кортеж тензоров, удовлетворяющих этому свойству. Первые два измерения должны совпадать во всех входных данных, но в остальном ранги и другие компоненты формы могут отличаться. В этом случае вход в cell на каждом временном шаге будет дублировать структуру этих кортежей, за исключением временного измерения (от которого берётся время). Вход в cell на каждом временном шаге будет Tensor или (возможно, вложенный) кортеж тензоров с размерами [batch_size, ...].
sequence_length (необязательно) Вектор int32/int64 размера [batch_size]. Используется для копирования состояния и обнуления выходных данных при прохождении за длиной последовательности элемента пакета. Этот параметр позволяет пользователям извлекать последнее действительное состояние и должным образом заполненные выходные данные, поэтому он предоставляется для корректности.
initial_state (необязательно) Начальное состояние для RNN. Если cell.state_size — целое число, это должен быть Tensor соответствующего типа и формы [batch_size, cell.state_size]. Если cell.state_size — кортеж, это должен быть кортеж тензоров с формами [batch_size, s] for s in cell.state_size.
dtype (необязательно) Тип данных для начального состояния и ожидаемого вывода. Требуется, если initial_state не предоставлен или состояние 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 имеют формат batch-major, поэтому по умолчанию эта функция принимает вход и выводит выход в формате batch-major.
scope Scope переменной для создаваемого подграфа; по умолчанию "rnn".
Возвращаемое значение
Пара (outputs, state), где:
outputs Выход RNN Tensor.

Если time_major == False (по умолчанию), это будет Tensor формы: [batch_size, max_time, cell.output_size].

Если time_major == True, это будет Tensor формы: [max_time, batch_size, cell.output_size].

Обратите внимание, если cell.output_size — (возможно, вложенный) кортеж целых чисел или объектов TensorShape, то outputs будет кортежем, имеющим ту же структуру, что и cell.output_size, содержащим тензоры с формами, соответствующими данным формы в cell.output_size.

state Конечное состояние. Если cell.state_size целое число, это будет иметь форму [batch_size, cell.state_size]. Если это TensorShape, это будет иметь форму [batch_size] + cell.state_size. Если это (возможно, вложенный) кортеж целых чисел или TensorShape, это будет кортеж с соответствующими формами. Если ячейки LSTMCells state, то LSTMStateTuple будет кортеж, содержащий по одной LSTMStateTuple для каждой ячейки.
Исключения
TypeError Если cell не является экземпляром 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/r2.4/api_docs/python/tf/compat/v1/nn/dynamic_rnn

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API