Function Differences with torch.broadcast_tensors
torch.broadcast_tensors
torch.broadcast_tensors(
*tensors
)
For more information, see torch.broadcast_tensors.
mindspore.ops.BroadcastTo
class mindspore.ops.BroadcastTo(shape)(input_x)
For more information, see mindspore.ops.BroadcastTo.
Differences
PyTorch: Broadcasts given tensors according to Broadcasting-semantics .
MindSpore:Broadcasts a given Tensor to a specified shape Tensor.
Code Example
import mindspore as ms
import mindspore.ops as ops
import torch
import numpy as np
# In MindSpore, the parameter shape is passed to reshape input_x.
shape = (2, 3)
input_x = ms.Tensor(np.array([1, 2, 3]).astype(np.float32))
broadcast_to = ops.BroadcastTo(shape)
output = broadcast_to(input_x)
print(output.shape)
# Out:
# (2, 3)
# In torch, two tensors x and y should be separately passed.
# And the final output of the tensor's shape will be determined by these inputs' shapes according to rules mentioned above.
x = torch.Tensor(np.array([1, 2, 3]).astype(np.float32)).view(1, 3)
y = torch.Tensor(np.array([4, 5]).astype(np.float32)).view(2, 1)
m, n = torch.broadcast_tensors(x, y)
print(m.shape)
# Out:
# torch.Size([2, 3])