slice_cn.rst 2.5 KB
Newer Older
H
Hao Wang 已提交
1 2 3 4 5 6 7 8 9
.. _cn_api_fluid_layers_slice:

slice
-------------------------------

.. py:function:: paddle.fluid.layers.slice(input, axes, starts, ends)

slice算子。

X
xsrobin 已提交
10
沿多个轴生成输入张量的切片。与numpy类似: https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html Slice使用 ``axes`` 、 ``starts`` 和 ``ends`` 属性来指定轴列表中每个轴的起点和终点维度,它使用此信息来对输入数据张量切片。如果向 ``starts`` 或 ``ends`` 传递负值,则表示该维度结束之前的元素数目。如果传递给 ``starts`` 或 ``end`` 的值大于n(此维度中的元素数目),则表示n。当切片一个未知数量的维度时,建议传入INT_MAX. ``axes`` 的大小必须和 ``starts`` 和 ``ends`` 的相等。以下示例将解释切片如何工作:
H
Hao Wang 已提交
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

::

        案例1:
                给定:
                     data=[[1,2,3,4],[5,6,7,8],]
                     axes=[0,1]
                     starts=[1,0]
                     ends=[2,3]
                则:
                     result=[[5,6,7],]

        案例2:
                给定:
                     data=[[1,2,3,4],[5,6,7,8],]
                     starts=[0,1]
                     ends=[-1,1000]
                则:
                     result=[[2,3,4],]

参数:
        - **input** (Variable)- 提取切片的数据张量(Tensor)。
        - **axes** (List)- (list <int>)开始和结束的轴适用于。它是可选的。如果不存在,将被视为[0,1,...,len(starts)- 1]。
34 35
        - **starts** (List|Variable)- (list <int>)在轴上开始相应轴的索引。
        - **ends** (List|Variable)- (list <int>)在轴上结束相应轴的索引。
H
Hao Wang 已提交
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

返回:        切片数据张量(Tensor).

返回类型:        输出(Variable)。


**代码示例:**

.. code-block:: python

    import paddle.fluid as fluid

    input = fluid.layers.data(
        name="input", shape=[3, 4, 5, 6], dtype='float32')

51 52 53 54 55 56 57 58
    # example 1:
    # attr starts is a list which doesn't contain tensor Variable.
    axes = [0, 1, 2]
    starts = [-3, 0, 2]
    ends = [3, 2, 4]
    sliced_1 = fluid.layers.slice(input, axes=axes, starts=starts, ends=ends)
    # sliced_1 is input[:, 0:3, 0:2, 2:4].

H
Hao Wang 已提交
59

60 61 62 63 64
    # example 2:
    # attr starts is a list which contain tensor Variable.
    minus_3 = fluid.layers.fill_constant([1], "int32", -3)
    sliced_2 = fluid.layers.slice(input, axes=axes, starts=[minus_3, 0, 2], ends=ends)
    # sliced_2 is input[:, 0:3, 0:2, 2:4].
H
Hao Wang 已提交
65 66 67 68 69 70