什么网站可以做动画,景县做个油管的网站怎么做,论坛网站方案,wordpress添加版块在 PyTorch 中#xff0c;卷积层主要由 torch.nn.Conv1d、torch.nn.Conv2d 和 torch.nn.Conv3d 实现#xff0c;分别对应一维、二维和三维卷积操作。以下是详细说明#xff1a;
1. 二维卷积 (Conv2d) - 最常用
import torch.nn as nn# 基本参数
conv nn.Conv2d(in_channe…在 PyTorch 中卷积层主要由 torch.nn.Conv1d、torch.nn.Conv2d 和 torch.nn.Conv3d 实现分别对应一维、二维和三维卷积操作。以下是详细说明
1. 二维卷积 (Conv2d) - 最常用
import torch.nn as nn# 基本参数
conv nn.Conv2d(in_channels3, # 输入通道数 (如RGB图像为3)out_channels16, # 输出通道数/卷积核数量kernel_size3, # 卷积核大小 (可以是int或tuple, 如(3,3))stride1, # 步长 (默认1)padding1, # 边界填充 (默认0)dilation1, # 空洞卷积参数 (默认1)groups1, # 分组卷积参数 (默认1)biasTrue # 是否使用偏置 (默认True)
)
计算输出尺寸 比如高度 2. 使用示例
import torch# 输入张量 (batch_size4, 通道3, 高32, 宽32)
x torch.randn(4, 3, 32, 32)# 卷积层
conv nn.Conv2d(3, 16, kernel_size3, padding1)
output conv(x)
print(output.shape) # torch.Size([4, 16, 32, 32])
3. 特殊卷积类型
(1) 空洞卷积 (Dilated Convolution)
nn.Conv2d(3, 16, kernel_size3, dilation2) # 扩大感受野
(2) 分组卷积 (Grouped Convolution)
nn.Conv2d(16, 32, kernel_size3, groups4) # 将输入/输出通道分为4组
(3) 深度可分离卷积 (Depthwise Separable)
# 等价于 groupsin_channels
depthwise nn.Conv2d(16, 16, kernel_size3, groups16)
pointwise nn.Conv2d(16, 32, kernel_size1) # 1x1卷积
4. 一维和三维卷积
Conv1d (时序数据/文本)
conv1d nn.Conv1d(in_channels256, out_channels100, kernel_size3)
# 输入形状: (batch, channels, sequence_length)
Conv3d (视频/体积数据)
conv3d nn.Conv3d(1, 32, kernel_size(3,3,3))
# 输入形状: (batch, channels, depth, height, width)
5. 转置卷积 (反卷积)
nn.ConvTranspose2d(16, 8, kernel_size2, stride2) # 常用于上采样
6. 初始化权重
# 常用初始化方法
nn.init.kaiming_normal_(conv.weight, modefan_out)
nn.init.constant_(conv.bias, 0.1)
7. 可视化卷积核
import matplotlib.pyplot as pltweights conv.weight.detach().cpu()
plt.figure(figsize(10,5))
for i in range(16):plt.subplot(4,4,i1)plt.imshow(weights[i,0], cmapgray)
plt.show()
8. 总结 卷积核参数共享大大减少参数量 paddingsame 可保持输入输出尺寸相同 (PyTorch 1.9) 通常配合 BatchNorm 和 ReLU 使用 使用 print(conv) 可查看层结构
实际应用中卷积层常与池化层交替使用构建CNN架构如
self.conv_block nn.Sequential(nn.Conv2d(3, 32, 3, padding1),nn.BatchNorm2d(32),nn.ReLU(),nn.MaxPool2d(2)
)