SplitToSequence#
SplitToSequence - 11#
Version
name: SplitToSequence (GitHub)
domain: main
since_version: 11
function:
support_level: SupportType.COMMON
shape inference: True
This version of the operator has been available since version 11.
Summary
Attributes
axis - INT : Which axis to split on. A negative value means counting dimensions from the back. Accepted range is [-rank, rank-1].
keepdims - INT : Keep the split dimension or not. Default 1, which means we keep split dimension. If input ‘split’ is specified, this attribute is ignored.
Inputs
Between 1 and 2 inputs.
input (heterogeneous) - T:
split (optional, heterogeneous) - I:
Outputs
output_sequence (heterogeneous) - S:
Type Constraints
T in ( tensor(bool), tensor(complex128), tensor(complex64), tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8) ): Constrain input types to all tensor types.
I in ( tensor(int32), tensor(int64) ): Constrain split size to integral tensor.
S in ( seq(tensor(bool)), seq(tensor(complex128)), seq(tensor(complex64)), seq(tensor(double)), seq(tensor(float)), seq(tensor(float16)), seq(tensor(int16)), seq(tensor(int32)), seq(tensor(int64)), seq(tensor(int8)), seq(tensor(string)), seq(tensor(uint16)), seq(tensor(uint32)), seq(tensor(uint64)), seq(tensor(uint8)) ): Constrain output types to all tensor types.
Examples
_with_split_1
import numpy as np
import onnx
data = np.arange(18).reshape((3, 6)).astype(np.float32)
split = np.array(2, dtype=np.int64)
node = onnx.helper.make_node(
"SplitToSequence", ["data", "split"], ["seq"], axis=1
)
expected_outputs = [
[
np.array([[0.0, 1.0], [6.0, 7.0], [12.0, 13.0]], dtype=np.float32),
np.array([[2.0, 3.0], [8.0, 9.0], [14.0, 15.0]], dtype=np.float32),
np.array([[4.0, 5.0], [10.0, 11.0], [16.0, 17.0]], dtype=np.float32),
]
]
expect(
node,
inputs=[data, split],
outputs=expected_outputs,
name="test_split_to_sequence_1",
)
_with_split_2
import numpy as np
import onnx
data = np.arange(18).reshape((3, 6)).astype(np.float32)
split = np.array([1, 2], dtype=np.int64)
node = onnx.helper.make_node(
"SplitToSequence", ["data", "split"], ["seq"], axis=0
)
expected_outputs = [
[
data[:1],
data[1:],
]
]
expect(
node,
inputs=[data, split],
outputs=expected_outputs,
name="test_split_to_sequence_2",
)
_nokeepdims
import numpy as np
import onnx
data = np.arange(18).reshape((3, 6)).astype(np.float32)
node = onnx.helper.make_node(
"SplitToSequence",
["data"],
["seq"],
axis=1,
keepdims=0,
)
expected_outputs = [list(data[:, i] for i in range(data.shape[1]))]
expect(
node,
inputs=[data],
outputs=expected_outputs,
name="test_split_to_sequence_nokeepdims",
)