padding函数的模式:
torch.nn.functional.pad(input, pad, mode='constant/reflect/replicate')
或者:
torch.nn.functional.pad(input, pad, mode='constant', value=0)# 默认常值0填充
现在只有pad部分需要比较高的注意力,给出以下使用解释:
p3d = (1, 2, 3, 4, 5, 6)
# p3d = (左边填充数, 右边填充数, 上边填充数, 下边填充数, 前边填充数,后边填充数)
p2d = (1, 2, 3, 4)
# p2d = (左边填充数, 右边填充数, 上边填充数, 下边填充数)
常用的padding方法,对于图像分块不够的情况下padding(分别在图像的右侧和下侧进行填充)
import torch.nn as nn
import torch.nn.functional as F
if pad_input:
# to pad the last 3 dimensions,
# (W_left, W_right, H_top,H_bottom, C_front, C_back)
x = F.pad(x, (0, self.patch_size[1] - W % self.patch_size[1],
0, self.patch_size[0] - H % self.patch_size[0],
0, 0))
插值(对tensor的后两个维度扩展)
TORCH.NN.FUNCTIONAL.INTERPOLATE
score_map = F.interpolate(dist_list.unsqueeze(1), size=x.size(2), mode='bilinear',
align_corners=False).squeeze().numpy()
align_corners(默认False)
import torch.nn.functional as F
import torch
a = torch.arange(4, dtype=torch.float32).reshape(1, 1, 2, 2)
b = F.interpolate(a, size=(4, 4), mode='bilinear',align_corners=False)# b = F.interpolate(a, size=(4, 4), mode='nearest')
tensor([[[[0., 1.],
[2., 3.]]]])
tensor([[[[0.0000, 0.2500, 0.7500, 1.0000],
[0.5000, 0.7500, 1.2500, 1.5000],
[1.5000, 1.7500, 2.2500, 2.5000],
[2.0000, 2.2500, 2.7500, 3.0000]]]])
import torch.nn.functional as F
import torch
a = torch.arange(4, dtype=torch.float32).reshape(1, 1, 2, 2)
b = F.interpolate(a, size=(4, 4), mode='bilinear',align_corners=True)
tensor([[[[0., 1.],
[2., 3.]]]])
tensor([[[[0.0000, 0.3333, 0.6667, 1.0000],
[0.6667, 1.0000, 1.3333, 1.6667],
[1.3333, 1.6667, 2.0000, 2.3333],
[2.0000, 2.3333, 2.6667, 3.0000]]]])