当前位置: 首页 > news >正文

python打卡day41@浙大疏锦行

知识回顾

1.  数据增强

2.  卷积神经网络定义的写法

3.  batch归一化:调整一个批次的分布,常用与图像数据

4.  特征图:只有卷积操作输出的才叫特征图

5.  调度器:直接修改基础学习率

卷积操作常见流程如下:

1. 输入 → 卷积层 → Batch归一化层(可选) → 池化层 → 激活函数 → 下一层

2.  Flatten -> Dense (with Dropout,可选) -> Dense (Output)

作业:尝试手动修改下不同的调度器和CNN的结构,观察训练的差异。

一、CNN结构修改示例

# 基础CNN结构
class BasicCNN(nn.Module):def __init__(self):super().__init__()self.conv_layers = nn.Sequential(nn.Conv2d(3, 32, 3, padding=1),  # 修改1:调整卷积核数量nn.BatchNorm2d(32),              # 修改2:添加/移除BN层nn.MaxPool2d(2),nn.ReLU(),nn.Conv2d(32, 64, 5, padding=2), # 修改3:调整卷积核大小nn.AdaptiveAvgPool2d(1)          # 修改4:更换池化方式)self.fc = nn.Linear(64, 10)# 深度可分离卷积示例
class DepthwiseCNN(nn.Module):def __init__(self):super().__init__()self.layers = nn.Sequential(nn.Conv2d(3, 32, 3, groups=32),  # 深度可分离卷积nn.Conv2d(32, 64, 1),            # 逐点卷积nn.BatchNorm2d(64),nn.SiLU()                         # 修改5:更换激活函数)

二、学习率调度器修改示例

# 基础训练配置
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)# 方案1:阶梯下降
scheduler1 = torch.optim.lr_scheduler.StepLR(optimizer, step_size=5, gamma=0.1)# 方案2:余弦退火
scheduler2 = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer,T_max=10)# 方案3:带热启动的余弦退火
scheduler3 = torch.optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer,T_0=5,T_mult=2)# 训练循环中更新
for epoch in range(10):# ...训练步骤...scheduler1.step()  # 切换不同调度器观察效果

三、实验建议对比项

① 卷积核数量对比
- 小通道数 (如32/64):训练快、显存占用低,但可能欠拟合
- 大通道数 (如64/128):模型容量大,但计算量高,需注意过拟合

②BatchNorm使用对比
- 带BN层 :训练稳定,允许更大学习率
- 不带BN层 :对初始化敏感,适合小批量数据

③激活函数对比
- ReLU :计算高效,但可能导致神经元死亡
- Swish :梯度更平滑,适合深层网络

④学习率调度器对比
- StepLR :阶梯式下降,适合离散式优化
- Cosine :平滑调整,适合连续训练

四、关键代码插入位置

# ...原有训练代码...
for epoch in range(epochs):# 插入学习率监控current_lr = optimizer.param_groups[0]['lr']print(f'Epoch {epoch}, LR: {current_lr:.6f}')# 插入特征图可视化(可选)if epoch % 5 == 0:visualize_features(model.conv1.weight)

相关文章:

  • 【MySQL】索引(B+树详解)
  • python:PyMOL 使用教程 及实用示例
  • 【愚公系列】《生产线数字化设计与仿真》006-颜色分类站仿真(配置颜色分类站的气缸和传送带)
  • 1-Wire 一线式总线:从原理到实战,玩转 DS18B20 温度采集
  • Python字符串格式化(三): t-string前瞻(Python 3.14 新特性)
  • VR/AR 视网膜级显示破局:10000PPI 如何终结颗粒感时代?
  • FreeRTOS多任务系统①
  • 利用计算机模拟和玉米壳废料开发新型抗病毒药物合成方法
  • 如何用VASP计算单个原子的能量和能级
  • 【leetcode】704. 二分查找
  • SOC-ESP32S3部分:19-ADC模数转换
  • 熵最小化Entropy Minimization (一): 基本认识
  • LangChain-自定义Tool和Agent结合DeepSeek应用实例
  • python装饰器
  • 深入理解数组索引:原理、应用与优化
  • 《操作系统真相还原》——加载器
  • 二维平面点集相似问题思考及优化
  • 《java创世手记》---java基础篇(下)
  • python37天打卡
  • 智慧工厂整体解决方案
  • 嘉兴做网站公司哪家好/推广发帖网站
  • 自己做网站微商/seo网站优化报价
  • 高端产品网站建设/搜索引擎营销实训报告
  • css如何让网站首字放大/潍坊在线制作网站
  • 上海黄浦网站建设/微信seo什么意思
  • 网站建设与开发的收获与体会/关键词指数查询