Spec-Zone.ru › TensorFlow

tf.strided_slice

Извлекает срез тензора с заданным шагом (обобщённая индексация массивов в стиле 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. Интерфейс этой операции представляет собой низкоуровневое представление синтаксиса срезов.

В общих чертах эта операция извлекает из заданного тензора input_ срез размером (end-begin)/stride. Начиная с позиции, указанной в 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_ Объект типа Tensor.
begin Объект типа int32 или int64 Tensor.
end Объект типа int32 или int64 Tensor.
strides Объект типа int32 или int64 Tensor.
begin_mask Маска int32.
end_mask Маска int32.
ellipsis_mask Маска int32.
new_axis_mask Маска int32.
shrink_axis_mask Маска int32.
var Переменная, соответствующая input_, или None
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/strided_slice

Spec-Zone.ru

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