Spec-Zone.ru › TensorFlow 1.15

tf.lite.experimental.nn.dynamic_rnn

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

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения более подробной информации.

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

tf.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 Прозрачно меняет местами тензоры, полученные в процессе прямого вывода, но необходимые для обратного распространения, с графического процессора на процессор. Это позволяет обучать RNN, которые обычно не помещаются на один графический процессор, с минимальными (или без) потерями производительности.
time_major Формат формы тензоров inputs и outputs. Если True, эти Tensors должны иметь форму [max_time, batch_size, depth]. Если False, эти Tensors должны иметь форму [batch_size, max_time, depth]. Использование time_major = True немного эффективнее, так как оно избегает транспозиций в начале и конце вычислений RNN. Однако большинство данных TensorFlow — по-партийно, поэтому по умолчанию эта функция принимает вход и выводит выход в формате по партиям.
scope Область переменных для созданного подграфа; по умолчанию "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 Если не используется потоковая обработка 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/r1.15/api_docs/python/tf/lite/experimental/nn/dynamic_rnn

Spec-Zone.ru

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