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]]]])
本文介绍了在深度学习中,如何使用`torch.nn.functional.pad`进行图像填充,详细阐述了不同填充模式的作用,并通过实例展示了如何处理图像分块不足的情况。同时,探讨了`F.interpolate`函数用于图像插值的方法,包括 bilinear 插值模式和 align_corners 参数的影响。这些技术在深度学习模型中用于调整输入尺寸和保持比例的关键操作。
5983

被折叠的 条评论
为什么被折叠?



