mindspore.ops.SplitV
- class mindspore.ops.SplitV(size_splits, split_dim, num_split)[源代码]
Splits the input tensor into num_split tensors along the given dimension.
The input_x tensor will be split into sub-tensors with individual shapes given by size_splits along the split dimension. This requires that input_x.shape(split_dim) is equal to the sum of size_splits.
The shape of input_x is \((x_1, x_2, ..., x_M, ..., x_R)\). The rank of input_x is R. Set the given split_dim as M, and \(-R \le M < R\). Set the given num_split as N, the given size_splits as \((x_{m_1}, x_{m_2}, ..., x_{m_N})\), \(x_M=\sum_{i=1}^Nx_{m_i}\). The output is a list of tensor objects, for the \(i\)-th tensor, it has the shape of \((x_1, x_2, ..., x_{m_i}, ..., x_R)\). \(x_{m_i}\) is the \(M\)-th dimension of the \(i\)-th tensor. Then, the shape of the output tensor is
\[((x_1, x_2, ..., x_{m_1}, ..., x_R), (x_1, x_2, ..., x_{m_2}, ..., x_R), ..., (x_1, x_2, ..., x_{m_N}, ..., x_R))\]- Parameters
size_splits (Union[tuple, list]) – The list containing the sizes of each output tensor along the split dimension. Must sum to the dimension of value along split_dim. Can contain one -1 indicating that dimension is to be inferred.
split_dim (int) – The dimension along which to split. Must be in the range [-len(input_x.shape), len(input_x.shape)).
num_split (int) – The number of output tensors. Must be positive int.
- Inputs:
input_x (Tensor) - The shape of tensor is \((x_1, x_2, ...,x_M ..., x_R)\).
- Outputs:
Tensor, a list of num_split Tensor objects with the shape \(((x_1, x_2, ..., x_{m_1}, ..., x_R), (x_1, x_2, ..., x_{m_2}, ..., x_R), ..., (x_1, x_2, ..., x_{m_N}, ..., x_R))\), \(x_M=\sum_{i=1}^Nx_{m_i}\). The data type is the same with input_x.
- Raises
TypeError – If input_x is not a Tensor.
TypeError – If size_splits is not a tuple or a list.
TypeError – If element of size_splits is not an int.
TypeError – If split_dim or num_split is not an int.
ValueError – If rank of the size_splits is not equal to num_split.
ValueError – If sum of the size_splits is not equal to the dimension of value along split_dim.
ValueError – If split_dim is out of the range [-len(input_x.shape), len(input_x.shape)).
ValueError – If the num_split is less than or equal to 0.
- Supported Platforms:
Ascend
Examples
>>> input_x = Tensor(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), mindspore.int32) >>> op = ops.SplitV(size_splits=[1, -1], split_dim=1, num_split=2) >>> output = op(input_x) >>> print(output) (Tensor(shape=[3, 1], dtype=Int32, value= [[1], [4], [7]]), Tensor(shape=[3, 2], dtype=Int32, value= [[2, 3], [5, 6], [8, 9]])) >>> input_x = Tensor(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), mindspore.int32) >>> op = ops.SplitV(size_splits=[2, 1], split_dim=0, num_split=2) >>> output = op(input_x) >>> print(output) (Tensor(shape=[2, 3], dtype=Int32, value= [[1, 2, 3], [4, 5, 6]]), Tensor(shape=[1, 3], dtype=Int32, value= [[7, 8, 9]]))