卷积神经网络常见的层
类型 | 名称 | 作用 |
---|---|---|
Conv | 卷积层 | 提取特征 |
ReLU | 激活层 | 激活 |
Pool | 池化 | —— |
BatchNorm | 批量归一化 | —— |
Linear(Full Connect) | 全连接层 | —— |
Dropout | —— | —— |
ConvTranspose | 反卷积 | —— |
pytorch中各种层的用法
卷积 Convolution
参考:https://pytorch.org/docs/stable/_modules/torch/nn/modules/conv.html#Conv1d
卷积类型 | 作用 |
---|---|
torrch.nn.Conv1d |
一维卷积 |
torch.nn.Conv2d |
二维卷积 |
torch.nn.Conv3d |
三维卷积 |
torch.nn.ConvTranspose1d |
一维反卷积 |
torch.nn.ConvTranspose2d |
二维反卷积 |
torch.nn.ConvTranspose3d |
三维反卷积 |
示例:
m = nn.Conv1d(in_channels=16,
out_channels=33,
kernel_size=3,
padding=1,
stride=1)
input = torch.randn(1, 16, 50)
output = m(input)
print(output.size())
# nn.Conv2d()
m = nn.Conv2d(in_channels=16,
out_channels=33,
kernel_size=3,
stride=2)
input = torch.randn(20, 16, 50, 100)
output = m(input)
print(output.size())
m = nn.Conv2d(in_channels=16,
out_channels=33,
kernel_size=(3, 5),
stride=(2, 1),
padding=(4, 2),
dilation=(3, 1))
output = m(input)
print(output.size())
# nn.ConvTranspose2d()
# 2d transpose convolution operator
m = nn.ConvTranspose2d(in_channels=16,
out_channels=33,
kernel_size=3,
stride=2)
input = torch.randn(20, 16, 50, 100)
output = m(input) # (20,33,101,201)
print(output.size())
# exact output size can be also specified as an argument
input = torch.randn(1, 16, 12, 12)
downsample = nn.Conv2d(in_channels=16,
out_channels=16,
kernel_size=3,
stride=2,
padding=1)
upsample = nn.ConvTranspose2d(in_channels=16,
out_channels=16,
kernel_size=3,
stride=2,
padding=1,
output_padding=1)
output = downsample(input) # 下采样, (1x16x6x6)
print(output.size())
output = upsample(output) # 上采样, (1x16x12x12)
print(output.size())
输出:
image.png
网友评论