比较与torch.nn.functional.pad的功能差异

torch.nn.functional.pad

torch.nn.functional.pad(
    input,
    pad,
    mode='constant',
    value=0
)

更多内容详见torch.nn.functional.pad

mindspore.ops.pad

mindspore.ops.pad(
    input_x,
    padding,
    mode='constant',
    value=None
)

更多内容详见mindspore.ops.pad

使用方式

PyTorch:pad参数是一个有m个值的tuple,m/2小于等于输入数据的维度,且m为偶数。支持填充负维度。假设pad=(k1, k2, …, kl, km),输入x的shape为(d1, d2…, dg),则dg维的两边分别填充长度为k1,k2的值。依此类推,d1维的两边分别填充长度为kl,km的值。

MindSpore:MindSpore的padding参数与PyTorch的pad参数功能用法完全一致,另外MindSpore相比PyTorch额外支持了Tensor类型的入参形式。

分类

子类

PyTorch

MindSpore

差异

参数

参数1

input

input_x

功能一致,参数名不同

参数2

pad

padding

功能一致,参数名不同

参数3

mode

mode

功能一致,mindspore暂缺失circular模式

参数4

value

value

功能一致,constant模式下mindspore入参None的时候默认值为0

代码示例

# In MindSpore.
import numpy as np
import torch
import mindspore.ops as ops
import mindspore as ms

x = ms.Tensor(np.ones([1, 2, 2, 3]).astype(np.float32))
padding = (1, 1, 2, 2)
output = ops.pad(x, padding)
print(output.shape)
# Out:
# (1, 2, 6, 5)

# In PyTorch.
x = torch.empty(1, 2, 2, 3)
pad = (1, 1, 2, 2)
output = torch.nn.functional.pad(x, pad)
print(output.size())
# Out:
# torch.Size([1, 2, 6, 5])