crop

paddle. crop ( x, shape=None, offsets=None, name=None ) [source]

Crop input into output, as specified by offsets and shape.

* Case 1 (input is a 2-D Tensor):
    Input:
        X.shape = [3, 5]
        X.data = [[0, 1, 2, 0, 0],
                  [0, 3, 4, 0, 0],
                  [0, 0, 0, 0, 0]]
    Parameters:
        shape = [2, 2]
        offsets = [0, 1]
    Output:
        Out.shape = [2, 2]
        Out.data = [[1, 2],
                    [3, 4]]
* Case 2 (input is a 3-D Tensor):
    Input:
        X.shape = [2, 3, 4]
        X.data =  [[[0, 1, 2, 3],
                    [0, 5, 6, 7],
                    [0, 0, 0, 0]],
                   [[0, 3, 4, 5],
                    [0, 6, 7, 8],
                    [0, 0, 0, 0]]]
    Parameters:
        shape = [2, 2, -1]
        offsets = [0, 0, 1]
    Output:
        Out.shape = [2, 2, 3]
        Out.data  = [[[1, 2, 3],
                      [5, 6, 7]],
                     [[3, 4, 5],
                      [6, 7, 8]]]
Parameters
  • x (Tensor) – 1-D to 6-D Tensor, the data type is float32, float64, int32 or int64.

  • shape (list|tuple|Tensor, optional) – The output shape is specified by shape. Its data type is int32. If a list/tuple, it’s length must be the same as the dimension size of x. If a Tensor, it should be a 1-D Tensor. When it is a list, each element can be an integer or a Tensor of shape: [1]. If Variable contained, it is suitable for the case that the shape may be changed each iteration.

  • offsets (list|tuple|Variable, optional) – Specifies the cropping offsets at each dimension. Its data type is int32. If a list/tuple, it’s length must be the same as the dimension size of x. If a Tensor, it should be a 1-D Tensor. When it is a list, each element can be an integer or a Tensor of shape: [1]. If Variable contained, it is suitable for the case that the offsets may be changed each iteration. Default: None, the offsets are 0 at each dimension.

  • name (str, optional) – Name for the operation (optional, default is None). For more information, please refer to Name.

Returns

The cropped Tensor has same data type with x.

Return type

Tensor

Examples

import paddle
x = paddle.to_tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# x.shape = [3, 3]
# x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# shape can be a 1-D Tensor or list or tuple.
shape = paddle.to_tensor([2, 2], dtype='int32')
# shape = [2, 2]
# shape = (2, 2)
out = paddle.crop(x, shape)
# out.shape = [2, 2]
# out = [[1,2], [4,5]]

# offsets can be a 1-D Tensor or list or tuple.
offsets = paddle.to_tensor([0, 1], dtype='int32')
# offsets = [1, 0]
# offsets = (1, 1)
out = paddle.crop(x, shape, offsets)
# out.shape = [2, 2]
# if offsets = [0, 0], out = [[1,2], [4,5]]
# if offsets = [0, 1], out = [[2,3], [5,6]]
# if offsets = [1, 0], out = [[4,5], [7,8]]
# if offsets = [1, 1], out = [[5,6], [8,9]]