DAY36 复习日@浙大疏锦行

📚 整体学习脉络

工程化规范模型训练与推理 ,逐步完成从 "写代码" 到 "做工程" 的过渡,核心是可维护性、高效性与可解释性


🔍 分日知识点拆解

DAY 30 模块和库的导入

  • 核心目标:规范代码结构,避免命名冲突与冗余。
  • 关键内容
    • 基础导入:import torch / from torch import nn 等标准写法。
    • 别名使用:import torch.nn.functional as F 简化调用。
    • 局部导入:只导入需要的函数 / 类,减少内存占用(如 from torch.utils.data import DataLoader)。
    • 避免问题:import * 会污染命名空间,不推荐使用。

DAY 31 文件的规范拆分和写法

  • 核心目标:让代码可复用、易维护,符合工程标准。
  • 关键内容
    • 目录结构:将数据加载、模型定义、训练逻辑、工具函数拆分为不同文件(如 dataset.py / model.py / train.py / utils.py)。
    • 模块化设计:每个文件只负责单一功能,降低耦合。
    • 入口文件:用 main.py 作为程序入口,统一调用各模块。
    • 代码规范:添加类型提示、注释,遵循 PEP8 风格。

DAY 32 官方文档的阅读

  • 核心目标:学会自主获取权威知识,解决实际问题。
  • 关键内容
    • 文档结构:熟悉 PyTorch 官方文档的模块划分(如 torch.nn / torch.optim / torch.utils.data)。
    • 高效检索:通过搜索函数 / 类名,快速定位参数说明、示例代码和注意事项。
    • 示例学习:通过官方示例代码理解 API 的实际使用场景。
    • 版本兼容:关注不同 PyTorch 版本的 API 变化,避免踩坑。

DAY 33 MLP 神经网络的训练

  • 核心目标:掌握完整的深度学习训练流程。
  • 关键内容
    • 模型定义:继承 nn.Module,实现 __init__forward 方法。
    • 数据准备:数据集加载、划分训练集 / 验证集、数据预处理。
    • 损失函数与优化器:选择合适的损失(如 CrossEntropyLoss)和优化器(如 SGD / Adam)。
    • 训练循环:前向传播 → 计算损失 → 反向传播 → 参数更新。
    • 验证逻辑:在验证集上评估模型性能,监控过拟合 / 欠拟合。

DAY 34 GPU 训练及类的 call 方法

  • 核心目标:提升训练效率,理解类的调用机制。
  • 关键内容
    • GPU 加速:使用 device = torch.device("cuda" if torch.cuda.is_available() else "cpu"),将模型和数据移至 GPU。
    • call 方法:nn.Module__call__ 方法会自动调用 forward,因此可以直接用 model(input) 完成前向传播。
    • 设备管理:确保所有张量与模型在同一设备上,避免运行时错误。
    • 性能优化:使用混合精度、数据加载并行等技巧进一步加速。

DAY 35 模型可视化与推理

  • 核心目标:让模型 "可解释",完成从训练到部署的最后一步。
  • 关键内容
    • 模型可视化:
      • torchinfo.summary:打印模型结构、参数量、输入 / 输出形状。
      • 权重分布可视化:绘制权重 / 梯度直方图,分析训练稳定性。
    • 进度条:使用 tqdm 或手动实现进度条,美化训练日志。
    • 推理模式:
      • 切换 model.eval() 关闭 Dropout/BatchNorm 的训练行为。
      • 使用 torch.no_grad() 禁用梯度计算,节省显存并加速推理。
    • 结果评估:在测试集上生成预测,计算最终指标。

💡 核心能力提炼

  1. 工程化能力:代码模块化、规范命名、高效阅读文档。
  2. 训练全流程掌控:从数据到模型,再到训练、验证、推理的完整闭环。
  3. 效率与可解释性:GPU 加速训练,可视化手段辅助调试与分析。
  4. 问题解决思维:能通过官方文档和工具定位并解决代码问题。

🎯 后续学习方向建议

  • 深入卷积神经网络(CNN)、循环神经网络(RNN)等更复杂模型结构。
  • 学习模型保存与加载,为部署做准备。
  • 探索更高级的训练技巧(如学习率调度、正则化、迁移学习)。
相关推荐
E_ICEBLUE31 分钟前
Python 控制 PDF 页面大小、页边距、页面方向与缩放
python·pdf
Polar__Star3 小时前
如何结合计划任务实现自动定时备份任务配置_全自动化运维管理
jvm·数据库·python
weixin_580614008 小时前
如何提取SQL日期中的年份_使用YEAR或EXTRACT函数
jvm·数据库·python
2301_813599558 小时前
SQL生产环境规范_数据库使用最佳实践
jvm·数据库·python
李可以量化8 小时前
QMT 量化实战:用 Python 实现线性回归通道,精准识别趋势中的支撑与压力(下)
python·qmt·量化 qmt ptrade
a9511416428 小时前
Go 中通过 channel 传递切片时的数据竞争与深拷贝解决方案
jvm·数据库·python
Dxy12393102168 小时前
Python 使用正则表达式将多个空格替换为一个空格
开发语言·python·正则表达式
qq_189807038 小时前
如何修改RAC数据库名_NID工具在集群环境下的改名步骤
jvm·数据库·python
zhangchaoxies8 小时前
如何检测SQL注入风险_利用模糊测试技术发现漏洞
jvm·数据库·python
Luca_kill9 小时前
MCP数据采集革命:从传统爬虫到智能代理的技术进化
爬虫·python·ai·数据采集·mcp·webscraping·集蜂云