0. 往期内容
[二]深度学习Pytorch-张量的操作:拼接、切分、索引和变换
[七]深度学习Pytorch-DataLoader与Dataset(含人民币二分类实战)
[八]深度学习Pytorch-图像预处理transforms
[九]深度学习Pytorch-transforms图像增强(剪裁、翻转、旋转)
[十]深度学习Pytorch-transforms图像操作及自定义方法
[十一]深度学习Pytorch-模型创建与nn.Module
[十二]深度学习Pytorch-模型容器与AlexNet构建
[十三]深度学习Pytorch-卷积层(1D/2D/3D卷积、卷积nn.Conv2d、转置卷积nn.ConvTranspose)
深度学习Pytorch-卷积层
1. 1D/2D/3D卷积
一个卷积核在一个信号上是几维它是几维卷积。
2. nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode=‘zeros’)
torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', device=None, dtype=None)
(1)功能:对多个二维
信号进行二维
卷积;
(2)参数:
in_channels
: 输入通道数;
out_channels
: 输出通道数,等于卷积核的个数;
kernel_size
: 卷积核的尺寸;
stride
: 步长,stride
步长是滑动时滑动几个像素;
padding
: 填充个数,保证输入和输出图像在尺寸上是匹配的;
左边:未加padding,输入44,输出22;
右边:加了padding,输入55,输出55.
dilation
: 空洞卷积的大小;
空洞卷积常用于分割任务,主要用于提升感受野,即输出图像一个像素能够看到输入图像更大的区域。
groups
: 分组卷积设置;
groups用于设置分组卷积的组数,常用于模型的轻量化。
Alexnet也是分组卷积,原因是受制于硬件,因为它用了两个GPU进行训练。
bias
: 偏置;
(3)代码示例:
set_seed(3) # 设置随机种子
# ================================= load img ==================================
path_img = os.path.join(os.path.dirname(os.path.abspath(__file__)), "lena.png")
img = Image.open(path_img).convert('RGB') # 0~255 RGB
# convert to tensor 张量
img_transform = transforms.Compose([transforms.