1. conv2d用法
- 格式:
torch.nn.Conv2d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True)
| 参数 | 作用 |
|---|---|
| in_channels | 输入的通道数 |
| out_channels | 输出的通道数 |
| kennel_size | 卷积核大小(例如:kennel_size=2,大小则是2×2, 若kennel_size=(2,3),则是2×3) |
| stride | 步长;默认为1(例如stride=2,则上下左右扫描皆为2,若stride=(2,1),H方向步长为2,W方向为3) |
| padding | 填充补0 |
| dilation | kernel间距,默认是1 |
2. 示例
import torch
import torch.nn as nn
x = torch.randn(10, 16, 30, 32) # batch, channel , height , width
print(x.shape)
net1 = nn.Conv2d(16, 33, (3, 2), (2,1))
print(net1)
y = net1(x)
print(y.shape)
Out:

解析:
input:10组数据,通道数为16,Hin=30,Win=32
卷积核长分别是 H:3,W:2 ;步长分别是H:2,W:1;padding默认0;
H o u t = 30 − 3 + 2 × 0 2 + 1 = 14 H_{out} = \frac{30 - 3 + 2 \times 0}{2} + 1=14Hout=230−3+2×0+1=14
W o u t = 32 − 2 + 2 × 0 1 + 1 = 31 W_{out} = \frac{32 - 2 + 2 \times 0}{1} + 1=31Wout=132−2+2×0+1=31batch = 10, out_channel = 33
–>故: y= ([10, 33, 14, 31])
注意: 若没有dilation,那就使用下面公式,简洁明了!

Ref
版权声明:本文为qq_40520596原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。