mindspore.ops.broadcast_to
- mindspore.ops.broadcast_to(x, shape)[source]
Broadcasts input tensor to a given shape. The dim of input shape must be smaller than or equal to that of target shape, suppose input shape
, target shape . The broadcast rules are as follows:Compare the value of x_m and y_m, x_{m-1} and y_{m-1}, …, x_1 and y_1 consecutively and decide whether these shapes are broadcastable and what the broadcast result is.
If the value pairs at a specific dim are equal, then that value goes right into that dim of output shape. With an input shape
, target shape , the inferred outpyt shape is .If the value pairs are unequal, there are three cases:
Case 1: Value of target shape is -1, then the value of the output shape is that of the input shape’s. With an input shape
, target shape , the output shape is .Case 2: Value of target shape is not -1 but the value ot the input shape is 1, then the value of the output shape is that of the target shape’s. With an input shape
, target shape , the output shape is .Case 3: All other cases mean that the two shapes are not broadcastable.
So far we got the last m dims of the outshape, now focus on the first
dims, there are two cases:If the first
dims of output shape does not have -1 in it, then fill the input shape with ones until their length are the same, and then refer to Case 2 mentioned above to calculate the output shape. With target shape :math:` (3, 1, 4, 1, 5, 9)`, input shape , the filled input shape will be and thus the output shape is :math:` (3, 1, 4, 1, 5, 9)`.If the first
dims of output shape have -1 in it, it implies this -1 is conrresponding to a non-existing dim so they’re not broadcastable. With target shape :math:` (3, -1, 4, 1, 5, 9)`, input shape , instead of operating the dim-filling process first, it raises errors directly.- Parameters
x (Tensor) – The input tensor. The data type should be one of the following types: float16, float32, int32, int8, uint8, bool. The shape is
where means,any number of additional dimensions.shape (tuple) – The target shape to broadcast. Can be fully specified, or have -1 in one position where it will be substituted by the input tensor’s shape in that position, see example.
- Returns
Tensor, with the given shape and the same data type as x.
- Raises
TypeError – If shape is not a tuple.
ValueError – If the target and input shapes are incompatible, or if a - 1 in the target shape is in an invalid location.
- Supported Platforms:
Ascend
GPU
CPU
Examples
>>> from mindspore.ops.function import broadcast_to >>> from mindspore import Tensor >>> shape = (2, 3) >>> x = Tensor(np.array([1, 2, 3]).astype(np.float32)) >>> output = broadcast_to(x, shape) >>> print(output) [[1. 2. 3.] [1. 2. 3.]] >>> shape = (-1, 2) >>> x = Tensor(np.array([[1], [2]]).astype(np.float32)) >>> output = broadcast_to(x, shape) >>> print(output) [[1. 1.] [2. 2.]]