torch.nn.functional.pad 是对Tensor做padding,输入的参数必须的torch的Tensor
一般地,习惯上会做如下声明
import torch.nn.functional as F
所以,torch.nn.functional.pad一般使用F.pad来代替
参数列表
- 第一个参数为Tensor
- 第二个参数为一个Tuple,它表示分别对前,后做多少位的padding操作
- 第三个参数位mode,mode一般有
'constant
’(default)'reflect
’'reflect
’'replicate'
or'circular'
- 第四个参数value,用于mode是
'constant
’下的填充。默认0
使用样例
example 1 (1D)
x=torch.Tensor([1,1,0,0,2,2])
x = F.pad(x, (0, 2), mode='constant')
print(x,x.shape)
example 2(1D)
x=torch.Tensor([1,1,0,0,2,2])
x = F.pad(x, (2, 0), mode='constant',value=9)
print(x,x.shape)
example 3(negetive padding)
x=torch.Tensor([1,1,0,0,2,2])
x = F.pad(x, (-2, 0), mode='constant')
print(x,x.shape)
example 4(2D)
x=torch.Tensor([1,1,0,0,2,2]).view(3,2)
x = F.pad(x, (0, 2), mode='constant')
print(x,x.shape)
example 5(3D)
x=torch.Tensor([1,1,0,0,2,2]).view(3,2,1)
x = F.pad(x, (1, 0), mode='constant')
print(x,x.shape)
example 6(reflect)
reflect模式下仅仅支持3D, 4D, 5D,其他的会报错
Only 3D, 4D, 5D padding with non-constant padding are supported for now
reflect用作于最后一维,最后一维的每一维最后一个item为轴,然后反射出一摸一样的部分。
x=torch.Tensor([1,2,3,0,4,5,0,-1,-2,-3,-4,0]).view(2,2,3)
print(x)
x = F.pad(x, (0, 2), mode='reflect')
print(x,x.shape)
example 7(replicate)
replicate模式下仅仅支持3D, 4D, 5D,其他的会报错
Only 3D, 4D, 5D padding with non-constant padding are supported for now
replicate用作于最后一维,最后一维的每一维最后一个item复制。
x=torch.Tensor([1,2,3,0,4,5,0,-1,-2,-3,-4,0]).view(2,2,3)
print(x)
x = F.pad(x, (0, 2), mode='replicate')
print(x,x.shape)
example 8(circular)
circular模式下仅仅支持3D, 4D, 5D,其他的会报错
Only 3D, 4D, 5D padding with non-constant padding are supported for now
circular用作于最后一维,最后一维从头开始复制
x=torch.Tensor([1,2,3,0,4,5,0,-1,-2,-3,-4,0]).view(2,2,3)
print(x)
x = F.pad(x, (0, 2), mode='circular')
print(x,x.shape)