Spec-Zone.ru › TensorFlow 2.3

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, 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 для каждой ячейки.
Исключения
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.3/api_docs/python/tf/compat/v1/lite/experimental/nn/dynamic_rnn

Spec-Zone.ru

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