比较与torch.flatten的功能差异
torch.flatten
torch.flatten(
input,
start_dim=0,
end_dim=-1
)
更多内容详见torch.flatten。
mindspore.ops.Flatten
class mindspore.ops.Flatten(*args, **kwargs)(input_x)
更多内容详见mindspore.ops.Flatten。
使用方式
PyTorch:支持指定维度对元素进行展开。
MindSpore:仅支持保留第0维元素,对其余维度的元素进行展开。
代码示例
import mindspore
from mindspore import Tensor
import mindspore.ops as ops
import torch
import numpy as np
# In MindSpore, only the 0th dimension will be reserved and the rest will be flattened.
input_tensor = Tensor(np.ones(shape=[1, 2, 3, 4]), mindspore.float32)
flatten = ops.Flatten()
output = flatten(input_tensor)
print(output.shape)
# Out:
# (1, 24)
# In torch, the dimension to reserve will be specified and the rest will be flattened.
input_tensor = torch.Tensor(np.ones(shape=[1, 2, 3, 4]))
output1 = torch.flatten(input=input_tensor, start_dim=1)
print(output1.shape)
# Out:
# torch.Size([1, 24])
input_tensor = torch.Tensor(np.ones(shape=[1, 2, 3, 4]))
output2 = torch.flatten(input=input_tensor, start_dim=2)
print(output2.shape)
# Out:
# torch.Size([1, 2, 12])