Spec-Zone.ru › TensorFlow 2.4

tf.compat.v1.lite.experimental.nn.dynamic_rnn

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

tf.compat.v1.lite.experimental.nn.dynamic_rnn(
    cell, inputs, sequence_length=None, initial_state=None, dtype=None,
    parallel_iterations=None, swap_memory=False, time_major=True, scope=None
)

Выполняет полностью динамическое развертывание 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 являются по-пакетно-главными, поэтому по умолчанию эта функция принимает вход и выдает выход в по-пакетно-главной форме.
scope VariableScope для создаваемого подграфа; по умолчанию «rnn».
Возвращаемые значения
Пара (выходы, состояние), где:
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 для каждой ячейки.
Исключения
TypeError Если cell не является экземпляром RNNCell.
ValueError Если inputs равно None или пустой список.
RuntimeError Если не используется control flow v2.

© 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/lite/experimental/nn/dynamic_rnn

Spec-Zone.ru

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