1 torch.nn.Conv2d
torch.nn.Conv2d
主要对输入Tensor应用2D卷积。
比如输入(N,C_{in},H,W)维度的Tensor,则输出(N,C_{out},H,W)的Tensor,这两者的关系可以描述为
其中,\star为2D cross-correlation操作,N为batch size,C为channels,H为高,W为宽。
1.1 torch.nn.Conv2d
形式
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)
参数
- in_channels(int):输入的特征维度
- out_channels(int):输出的特征维度
- kernel_size(int or tuple):卷积核大小
- stride(int or tuple):卷积的步幅,默认值为1
- padding(int or tuple):添加到输入两侧的零填充数量,默认值为0
- dilation(int or tuple):内核元素之间的间距,默认值为1
- groups(int):从输入通道到输出通道的阻塞连接数
- bias(bool):默认值为True,如果为True,则向输出添加可学习的偏差
- padding_mode(str):可选值为"zeros"、"reflect"、"replicate"、“circular”,默认值为"zeros"
输入与输出维度
一般,输入与输出tensor具有以下维度:
- input:(N,C_{in},H_{in},W_{in})或者(C_{in},H_{in},W_{in})
- output:(N,C_{out},H_{out},W_{out})或者(C_{out},H_{out},W_{out})
其中,
1.2 torch.nn.Conv2d的简单使用
假设有batch_size为10,in_channels特征维度为256,宽高都为224的输入tensor,使用卷积核大小为3,卷积步幅为1的二维卷积层对输入tensor进行卷积,
对应的pytorch代码如下:
import torch
if __name__ == '__main__':
batch_size = 10
in_channels = 256
h = 224
w = 224
out_channels = 512
input = torch.randn(size=(batch_size, in_channels, h, w))
conv2d = torch.nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=3)
out = conv2d(input)
print(out.shape)
输出
torch.Size([10, 512, 222, 222])
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Pytorch – torch.nn.Conv2d参数详解与使用
原文链接:https://www.stubbornhuang.com/2436/
发布于:2022年12月07日 13:10:14
修改于:2023年06月21日 17:45:57
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
52