slice

    该OP沿多个轴生成 input 的切片。与numpy类似: 该OP使用 axesstartsends 属性来指定轴列表中每个轴的起点和终点位置,并使用此信息来对 input 切片。如果向 startsends 传递负值如

    ,则表示该轴的反向第 i−1i−1 个位置(这里以0为初始位置)。如果传递给 startsend 的值大于n(维度中的元素数目),则表示n。当切片一个未知数量的维度时,建议传入 INT_MAXaxesstartsends 三个参数的元素数目必须相等。以下示例将解释切片如何工作:

    • input (Tensor)- 多维 Tensor,数据类型为 float16float32float64int32,或 。

    • axes (list|tuple)- 数据类型是 int32。表示进行切片的轴。

    • starts (list|tuple|Tensor)- 数据类型是 int32。如果 starts 的类型是 list 或 tuple,它的元素可以是整数或者形状为[1]的 Tensor 。如果 starts 的类型是 Tensor,则是1-D Tensor 。表示在各个轴上切片的起始索引值。

    返回:多维 Tensor ,数据类型与 input 相同。

    抛出异常:

    • TypeErrorstarts 的类型应该是 list、tuple 或 Tensor。

    代码示例:

    1. import paddle
    2. input = paddle.rand(shape=[4, 5, 6], dtype='float32')
    3. # example 1:
    4. # attr starts is a list which doesn't contain tensor.
    5. axes = [0, 1, 2]
    6. starts = [-3, 0, 2]
    7. ends = [3, 2, 4]
    8. # sliced_1 is input[1:3, 0:2, 2:4].
    9. # example 2:
    10. # attr starts is a list which contain tensor.
    11. minus_3 = paddle.full([1], -3, "int32")
    12. sliced_2 = paddle.slice(input, axes=axes, starts=[minus_3, 0, 2], ends=ends)