tf.raw_ops.ReverseSequence
Обращает вспять срезы переменной длины.
tf.raw_ops.ReverseSequence(
input, seq_lengths, seq_dim, batch_dim=0, name=None
)
Эта операция сначала разбивает input по измерению batch_dim на срезы, а затем для каждого среза i обращает первые seq_lengths[i] элементов по измерению seq_dim.
Элементы seq_lengths должны удовлетворять seq_lengths[i] <= input.dims[seq_dim], а seq_lengths должен быть вектором длины input.dims[batch_dim].
Выходной срез i по измерению batch_dim затем определяется входным срезом i, причем первые seq_lengths[i] срезов по измерению seq_dim обращены в обратном порядке.
Например:
# Given this: batch_dim = 0 seq_dim = 1 input.dims = (4, 8, ...) seq_lengths = [7, 2, 3, 5] # then slices of input are reversed on seq_dim, but only up to seq_lengths: output[0, 0:7, :, ...] = input[0, 7:0:-1, :, ...] output[1, 0:2, :, ...] = input[1, 2:0:-1, :, ...] output[2, 0:3, :, ...] = input[2, 3:0:-1, :, ...] output[3, 0:5, :, ...] = input[3, 5:0:-1, :, ...] # while entries past seq_lens are copied through: output[0, 7:, :, ...] = input[0, 7:, :, ...] output[1, 2:, :, ...] = input[1, 2:, :, ...] output[2, 3:, :, ...] = input[2, 3:, :, ...] output[3, 2:, :, ...] = input[3, 2:, :, ...]
В отличие от этого, если:
# Given this: batch_dim = 2 seq_dim = 0 input.dims = (8, ?, 4, ...) seq_lengths = [7, 2, 3, 5] # then slices of input are reversed on seq_dim, but only up to seq_lengths: output[0:7, :, 0, :, ...] = input[7:0:-1, :, 0, :, ...] output[0:2, :, 1, :, ...] = input[2:0:-1, :, 1, :, ...] output[0:3, :, 2, :, ...] = input[3:0:-1, :, 2, :, ...] output[0:5, :, 3, :, ...] = input[5:0:-1, :, 3, :, ...] # while entries past seq_lens are copied through: output[7:, :, 0, :, ...] = input[7:, :, 0, :, ...] output[2:, :, 1, :, ...] = input[2:, :, 1, :, ...] output[3:, :, 2, :, ...] = input[3:, :, 2, :, ...] output[2:, :, 3, :, ...] = input[2:, :, 3, :, ...]
| Аргументы | |
|---|---|
input | Tensor. Входные данные для обращения в обратном порядке. |
seq_lengths | Tensor. Должен иметь один из следующих типов: int32, int64. Одномерный, длины input.dims(batch_dim) и max(seq_lengths) <= input.dims(seq_dim) |
seq_dim | int. Измерение, для которого выполняется частичное обращение в обратном порядке. |
batch_dim | Необязательный int. По умолчанию — 0. Измерение, по которому выполняется обращение в обратном порядке. |
name | Необязательное имя операции. |
| Возвращает | |
|---|---|
Tensor. Имеет тот же тип, что и input. |
© 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/raw_ops/ReverseSequence