比较与torch.nn.Upsample的功能差异

查看源文件

torch.nn.Upsample

torch.nn.Upsample(
    size=None,
    scale_factor=None,
    mode='nearest',
    align_corners=None
)(input)

更多内容详见torch.nn.Upsample

mindspore.nn.ResizeBilinear

class mindspore.nn.ResizeBilinear(half_pixel_centers=False)(
    x,
    size=None,
    scale_factor=None,
    align_corners=False)

更多内容详见mindspore.nn.ResizeBilinear

使用方式

PyTorch:对数据进行上采样,有多种模式可以选择。

MindSpore:仅当前仅支持bilinear模式对数据进行采样,如果想要实现其他模式的采样,请参考mindspore.ops.interpolate。 half_pixel_centers默认值为False,设为True后和PyTorch实现功能一致。

代码示例

import mindspore as ms
import mindspore.nn as nn
import torch
import numpy as np

# In MindSpore, it is predetermined to use bilinear to resize the input image.
x = np.random.randn(1, 2, 3, 4).astype(np.float32)
resize = nn.ResizeBilinear(half_pixel_centers=True)
tensor = ms.Tensor(x)
output = resize(tensor, (5, 5))
print(output.shape)
# Out:
# (1, 2, 5, 5)

# In torch, parameter mode should be passed to determine which method to apply for resizing input image.
x = np.random.randn(1, 2, 3, 4).astype(np.float32)
resize = torch.nn.Upsample(size=(5, 5), mode='bilinear')
tensor = torch.tensor(x)
output = resize(tensor)
print(output.detach().numpy().shape)
# Out:
# (1, 2, 5, 5)