当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.strided_slice用法及代码示例


提取张量的跨步切片(广义 Python 数组索引)。

用法

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
)

参数

  • input_ 一个Tensor
  • begin 一个 int32int64 Tensor
  • end 一个 int32int64 Tensor
  • strides 一个 int32int64 Tensor
  • begin_mask int32 掩码。
  • end_mask int32 掩码。
  • ellipsis_mask int32 掩码。
  • new_axis_mask int32 掩码。
  • shrink_axis_mask int32 掩码。
  • var input_ 或 None 对应的变量
  • name 操作的名称(可选)。

返回

  • Tensorinput 类型相同。

另见tf.slice

大多数用户不想直接调用此操作,而是希望使用 NumPy-style 切片语法(例如 tensor[..., 3:4:-1, tf.newaxis, 3] ),该语法通过 tf.Tensor.getitemtf.Variable.getitem 得到支持。此操作的接口是切片语法的低级编码。

粗略地说,这个操作从给定的 input_ 张量中提取了一个大小为 (end-begin)/stride 的切片。从 begin 指定的位置开始,切片通过将 stride 添加到索引继续,直到所有维度不小于 end 。请注意,步幅可以是负数,这会导致反向切片。

给定一个 Python 切片 input[spec0, spec1, ..., specn] ,该函数将按如下方式调用。

begin , endstrides 将是长度为 n 的向量。 n 通常不等于input_ 张量的秩。

在每个掩码字段 (begin_mask , end_mask , ellipsis_mask , new_axis_mask , shrink_axis_mask) 中,第 i 个位将对应于第 i 个规范。

如果设置了begin_mask 的第i 位,则忽略begin[i],并使用该维度中可能的最大范围。 end_mask 的工作方式类似,除了结束范围。

7x8x9 张量上的 foo[5:,:,:3] 等价于 foo[5:7,0:8,0:3]foo[::-1] 反转形状为 8 的张量。

如果设置ellipsis_mask的第i位,则将根据需要在其他维度之间插入尽可能多的未指定维度。 ellipsis_mask 中只允许有一个非零位。

例如,形状 10x3x3x10 张量上的 foo[3:5,...,4:5] 等价于 foo[3:5,:,:,4:5] 并且 foo[3:5,...] 等价于 foo[3:5,:,:,:]

如果 new_axis_mask 的第 i 位被设置,则 begin , endstride 将被忽略,并在输出张量的此时添加一个新的长度为 1 维。

例如,foo[:4, tf.newaxis,:2] 将产生形状 (4, 1, 2) 张量。

如果设置 shrink_axis_mask 的第 i 位,则意味着第 i 个规范将维度缩小 1,取索引 begin[i] 处的值。在这种情况下,end[i]strides[i] 将被忽略。例如,在 Python 中,可能会执行 foo[:, 3,:],这将导致 shrink_axis_mask 等于 2。

注意:beginend 是zero-indexed。 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]]]

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.strided_slice。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。