oneflow.roll

oneflow.roll(input, shifts, dims=None)

Roll the tensor along the given dimension(s).

Elements that are shifted beyond the last position are re-introduced at the first position.

If a dimension is not specified, the tensor will be flattened before rolling and then restored to the original shape.

Parameters
  • input (oneflow.Tensor) – the input Tensor.

  • shifts (int or tuple of ints) – The number of places by which the elements of the tensor are shifted. If shifts is a tuple, dims must be a tuple of the same size, and each dimension will be rolled by the corresponding value.

  • dims (int or tuple of ints) – Axis along which to roll.

Returns

The result Tensor.

Return type

oneflow.Tensor

For example:

>>> import oneflow as flow
>>> import numpy as np
>>> x = np.array([[1, 2],
...               [3, 4],
...               [5, 6],
...               [7, 8]])
>>> input = flow.Tensor(x)
>>> input.shape
oneflow.Size([4, 2])
>>> out = flow.roll(input, 1, 0)
>>> out
tensor([[7., 8.],
        [1., 2.],
        [3., 4.],
        [5., 6.]], dtype=oneflow.float32)
>>> input.roll(-1, 1)
tensor([[2., 1.],
        [4., 3.],
        [6., 5.],
        [8., 7.]], dtype=oneflow.float32)