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

Python训练营打卡 Day52

神经网络调参指南

知识点回顾:

  1. 随机种子
  2. 内参的初始化
  3. 神经网络调参指南
    1. 参数的分类
    2. 调参的顺序
    3. 各部分参数的调整心得
  1. 随机种子

    • 定义:随机种子就像是餐厅的每日菜单,确保每次运行代码时,模型初始化和数据打乱的随机操作保持一致,方便调试和对比结果。

    • 作用:确保实验的可复现性。

  2. 内参的初始化

    • 定义:内参初始化就像是厨师在烹饪前对食材进行预处理,确保食材的新鲜度和质量。在神经网络中,参数初始化方法(如 Xavier 初始化、He 初始化)对模型的训练过程和最终性能有重要影响。

    • 常见方法

      • Xavier 初始化:适用于激活函数为 sigmoid 或 tanh 的网络。

      • He 初始化:适用于激活函数为 ReLU 的网络。

  3. 神经网络调参指南

    • 参数的分类

      • 学习率:控制优化步骤的大小。

      • 批量大小:每次训练使用的样本数量。

      • 优化器:如 SGD、Adam 等。

      • 正则化参数:如 L2 正则化强度、Dropout 概率。

    • 调参的顺序

      1. 学习率:先找到合适的学习率范围。类似于厨师烹饪时的火候控制,火候太大容易烧焦,太小则烹饪时间过长。

      2. 优化器:选择合适的优化器。类似于餐厅的管理策略,不同的管理策略(如 SGD、Adam)会影响餐厅的运营效率和顾客满意度。

      3. 批量大小:根据显存和数据特性调整。类似于餐厅每次接待的顾客数量,接待太多顾客可能影响服务质量,太少则资源利用率低。

      4. 正则化参数:最后调整正则化参数以防止过拟合。类似于餐厅的卫生标准,适当的卫生标准可以防止食物中毒(过拟合),但标准过高会增加运营成本。

    • 各部分参数的调整心得

      • 学习率:学习率过高会导致训练不稳定,过低则训练速度慢。可以使用学习率调度器动态调整。

      • 批量大小:较大的批量大小可以提高训练稳定性,但会增加显存占用。较小的批量大小可以提高泛化能力,但训练过程可能更不稳定。

      • 优化器:Adam 优化器通常表现较好,但 SGD 在某些情况下也能取得很好的效果。

      • 正则化参数:Dropout 概率一般在 0.3 到 0.5 之间,L2 正则化强度一般在 0.0001 到 0.01 之间。

作业:对于day'41的简单cnn,看看是否可以借助调参指南进一步提高精度。

为了提升简单CNN在CIFAR-10数据集上的精度,可以参考以下调参建议。这些操作如同优化餐厅运营,旨在提升出菜质量。

  1. 学习率调整:学习率决定了权重更新的幅度。当前使用固定学习率0.001,可以采用学习率调度器动态调整。例如,当验证损失 plateau 时,降低学习率。这好比根据餐厅运营状况灵活调整营销策略,初始高学习率快速降低损失,后期低学习率精细调整。

    scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', patience=3, factor=0.5)
  2. 学习率调整:学习率决定了权重更新的幅度。当前使用固定学习率0.001,可以采用学习率调度器动态调整。例如,当验证损失 plateau 时,降低学习率。这好比根据餐厅运营状况灵活调整营销策略,初始高学习率快速降低损失,后期低学习率精细调整。

    scheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', patience=3, factor=0.5)
  3. 优化器选择:Adam优化器适合大多数情况,但SGD在某些场景下可能带来更好的泛化性能。可以尝试SGD with momentum。这类似于更换餐厅管理团队,不同优化器有着各自的管理风格。

  4. 批量大小调整:批量大小影响训练稳定性和显存占用。当前批量大小为64,可以尝试128或256。这如同调整餐厅同一时间接待的顾客数量,需根据显存合理选择。

    optimizer = optim.Adam(model.parameters(), lr=0.001, weight_decay=1e-5)
  5. 正则化增强:当前使用Dropout(p=0.5),可以尝试增加L2正则化(weight decay)。这如同为防止食材变质而调整存储条件,有助于防止过拟合。

    train_transform = transforms.Compose([# ...其他转换...transforms.RandomErasing(p=0.1),
    ])
  6. 批量大小调整:批量大小影响训练稳定性和显存占用。当前批量大小为64,可以尝试128或256。这如同调整餐厅同一时间接待的顾客数量,需根据显存合理选择。

    self.bn_fc = nn.BatchNorm1d(512)
    x = self.bn_fc(x)
  7. 正则化增强:当前使用Dropout(p=0.5),可以尝试增加L2正则化(weight decay)。这如同为防止食材变质而调整存储条件,有助于防止过拟合。

@浙大疏锦行


文章转载自:

http://VGKoUcb5.bdtpd.cn
http://Ti5OnJZM.bdtpd.cn
http://Zuy0kM0d.bdtpd.cn
http://gj8c5kJM.bdtpd.cn
http://yRkn7qNG.bdtpd.cn
http://vOqK762z.bdtpd.cn
http://1erVmrZz.bdtpd.cn
http://YedlhAt2.bdtpd.cn
http://yVteNNVD.bdtpd.cn
http://YXOPIBw0.bdtpd.cn
http://fnpjztjL.bdtpd.cn
http://096JWG7w.bdtpd.cn
http://iEkitVNp.bdtpd.cn
http://J5AoHJYY.bdtpd.cn
http://AAIHDHSf.bdtpd.cn
http://NlOVdunY.bdtpd.cn
http://HdtO7hDB.bdtpd.cn
http://VitY6jKP.bdtpd.cn
http://lrNgfReq.bdtpd.cn
http://waevhQqh.bdtpd.cn
http://VWOGz26E.bdtpd.cn
http://IyGy7Y7V.bdtpd.cn
http://ahmgiew3.bdtpd.cn
http://GSEQF7N6.bdtpd.cn
http://cfSTk0Ao.bdtpd.cn
http://8I5HMTQd.bdtpd.cn
http://v5C4pXfP.bdtpd.cn
http://6CLg8gkJ.bdtpd.cn
http://8vvubBXk.bdtpd.cn
http://ZMtWbrkP.bdtpd.cn
http://www.dtcms.com/a/246851.html

相关文章:

  • 实战解析:如何用克魔(KeyMob)等工具构建iOS应用稳定性与数据可观测体系
  • windows下tokenizers-cpp编译
  • 【leetcode】104. 二叉树的最大深度
  • 【阿里巴巴 x 浙江大学】信息与交互设计 - 交互设计流程与要素
  • 在 IntelliJ IDEA 中运行时出现“Log already in use? tmlog in ./“
  • 面对3倍流量激增,「纽约时报」如何既稳又省?
  • 楼宇自控新方向:电力载波技术——低成本、高兼容性的智能未来
  • cocos android打包 错误总结
  • 瑞芯微 MIPI D-PHY 接收器(RX)驱动学习笔记
  • Vue + Vite 项目部署 Docker 全攻略:原理、路由机制、问题排查与开发代理解析
  • OBS Studio是什么?应用场景有哪些?
  • 一步一步学python之(4)编写第一个python程序(Pycharm)
  • FastDFS
  • 第七节 工程化与高级特性-装饰器(Decorators)的应用场景
  • Web APIS Day06
  • 日本云服务器租用多少钱合适
  • VRFF: Video Registration and Fusion Framework
  • Vue 跳转页面,第一次进页面,会出现样式混乱,刷新后即恢复正常(问题已解决)
  • flowable查询历史流程实例时条件变量的类型问题
  • 【消息队列】——如何使用Actor模型解决并发问题
  • RAID 阵列有哪些?分别有什么作用?
  • C++ 语言基础之数据类型详解
  • 万物互联时代的工业数据中枢——iGR-IMS多场景适配体系
  • @staticmethod 静态装饰器
  • 【3D插件推荐】PolyCloth v2.07 超强布料模拟工具(附图文安装教程与下载)
  • 手写Antd的form组件源码
  • 免费视频字幕提取工具推荐
  • docker-自动启动java 包
  • [25-cv-06422]David律所代理Dreams USA玩具手办商标维权
  • JavaScript 中 apply、call 和 bind 方法的手写实现