View source on GitHub |
Returns a RaggedTensor
containing the specified sequences of numbers.
tf.ragged.range(
starts, limits=None, deltas=1, dtype=None, name=None,
row_splits_dtype=tf.dtypes.int64
)
Each row of the returned RaggedTensor
contains a single sequence:
ragged.range(starts, limits, deltas)[i] ==
tf.range(starts[i], limits[i], deltas[i])
If start[i] < limits[i] and deltas[i] > 0
, then output[i]
will be an
empty list. Similarly, if start[i] > limits[i] and deltas[i] < 0
, then
output[i]
will be an empty list. This behavior is consistent with the
Python range
function, but differs from the tf.range
op, which returns
an error for these cases.
>>> tf.ragged.range([3, 5, 2]).to_list()
[[0, 1, 2], [0, 1, 2, 3, 4], [0, 1]]
>>> tf.ragged.range([0, 5, 8], [3, 3, 12]).to_list()
[[0, 1, 2], [], [8, 9, 10, 11]]
>>> tf.ragged.range([0, 5, 8], [3, 3, 12], 2).to_list()
[[0, 2], [], [8, 10]]
The input tensors starts
, limits
, and deltas
may be scalars or vectors.
The vector inputs must all have the same size. Scalar inputs are broadcast
to match the size of the vector inputs.
starts
: Vector or scalar Tensor
. Specifies the first entry for each range
if limits
is not None
; otherwise, specifies the range limits, and the
first entries default to 0
.limits
: Vector or scalar Tensor
. Specifies the exclusive upper limits for
each range.deltas
: Vector or scalar Tensor
. Specifies the increment for each range.
Defaults to 1
.dtype
: The type of the elements of the resulting tensor. If not specified,
then a value is chosen based on the other args.name
: A name for the operation.row_splits_dtype
: dtype
for the returned RaggedTensor
's row_splits
tensor. One of tf.int32
or tf.int64
.A RaggedTensor
of type dtype
with ragged_rank=1
.