Spec-Zone.ru › TensorFlow 2.9

tf.strided_slice

Просмотреть исходный код на GitHub

Извлекает строенный срез тензора (обобщённый индексирование массивов Python).

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

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

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

tf.compat.v1.strided_slice

tf.strided_slice(
    input_,
    begin,
    end,
    strides=None,
    begin_mask=0,
    end_mask=0,
    ellipsis_mask=0,
    new_axis_mask=0,
    shrink_axis_mask=0,
    var=None,
    name=None
)

См. также tf.slice.

Вместо непосредственного вызова этого оператора, большинство пользователей захотят использовать синтаксис срезов в стиле NumPy (например, tensor[..., 3:4:-1, tf.newaxis, 3]), который поддерживается через tf.Tensor.getitem и tf.Variable.getitem. Интерфейс этого оператора — это низкоуровневое кодирование синтаксиса срезов.

Грубо говоря, этот оператор извлекает срез размером (end-begin)/stride из данного input_ тензора. Начиная с расположения, заданного begin, срез продолжается, добавляя stride к индексу, пока все измерения не будут меньше end. Обратите внимание, что шаг может быть отрицательным, что приводит к обратному срезу.

Учитывая срез Python input[spec0, spec1, ..., specn], эта функция будет вызвана следующим образом.

begin, end, и strides будут векторами длины n. n вообще не равен рангу input_ тензора.

В каждом поле маски (begin_mask, end_mask, ellipsis_mask, new_axis_mask, shrink_axis_mask) i-й бит будет соответствовать i-му спецификации.

Если i-й бит begin_mask установлен, begin[i] игнорируется, и вместо этого используется максимально возможный диапазон в этом измерении. end_mask аналогично работает, за исключением конечного диапазона.

foo[5:,:,:3] над тензором 7x8x9 эквивалентно foo[5:7,0:8,0:3]. foo[::-1] инвертирует тензор с формой 8.

Если i-й бит ellipsis_mask установлен, то столько не указанных измерений, сколько необходимо, будет вставлено между другими измерениями. Только один ненулевой бит разрешен в ellipsis_mask.

Например, foo[3:5,...,4:5] над тензором формы 10x3x3x10 эквивалентно foo[3:5,:,:,4:5], а foo[3:5,...] эквивалентно foo[3:5,:,:,:].

Если i-й бит new_axis_mask установлен, тогда begin, end, и stride игнорируются, и новое измерение длиной 1 добавляется в этом месте в выходной тензор.

Например, foo[:4, tf.newaxis, :2] произведёт тензор формы (4, 1, 2).

Если i-й бит shrink_axis_mask установлен, это означает, что i-я спецификация уменьшает размерность на 1, принимая значение по индексу begin[i]. end[i] и strides[i] игнорируются в этом случае. Например, в Python можно сделать foo[:, 3, :], что приведет к тому, что shrink_axis_mask будет равно 2.

Примечание: begin и end нумеруются с нуля. strides значения должны быть ненулевыми.
t = tf.constant([[[1, 1, 1], [2, 2, 2]],
                 [[3, 3, 3], [4, 4, 4]],
                 [[5, 5, 5], [6, 6, 6]]])
tf.strided_slice(t, [1, 0, 0], [2, 1, 3], [1, 1, 1])  # [[[3, 3, 3]]]
tf.strided_slice(t, [1, 0, 0], [2, 2, 3], [1, 1, 1])  # [[[3, 3, 3],
                                                      #   [4, 4, 4]]]
tf.strided_slice(t, [1, -1, 0], [2, -3, 3], [1, -1, 1])  # [[[4, 4, 4],
                                                         #   [3, 3, 3]]]
Аргументы
input_ A Tensor.
begin An int32 или int64 Tensor.
end An int32 или int64 Tensor.
strides An int32 или int64 Tensor.
begin_mask An int32 маска.
end_mask An int32 маска.
ellipsis_mask An int32 маска.
new_axis_mask An int32 маска.
shrink_axis_mask An int32 маска.
var Переменная, соответствующая input_ или None
name Имя операции (необязательно).
Возвращаемое значение
A 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/versions/r2.9/api_docs/python/tf/strided_slice

Spec-Zone.ru

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