DAY 35


一、模型结构可视化

理解模型的两大关键:损失函数如何定义任务 ,以及层设计如何决定参数总量

1. nn.Module 自带方法
  • 打印模型结构print(model) 直接输出各层名称与顺序。
  • 查看参数详情model.named_parameters() 可遍历所有可训练参数,获取名称、形状(param.shape)。
  • 权重分布分析 :提取 weight 参数并转为 numpy 数组,绘制直方图观察各层权重的均值、标准差、最值等统计量。这些信息可辅助调整学习率、初始化方法或正则化强度。
2. torchsummary 库的 summary
  • 安装:pip install torchsummary
  • 用法:summary(model, input_size=(4,))
  • 必须提供 input_size(不含批量维度),因为 PyTorch 是动态图,需通过虚拟输入前向传播一次来推断各层的输出形状和参数量。
  • input_size 格式取决于模型类型:MLP 用 (特征数,),CNN 用 (通道, 高, 宽),RNN 用 (序列长度, 特征数)
  • 报告中参数量的计算:如 Linear(4,10) 有 4×10 个权重 + 10 个偏置 = 50 个参数;Linear(10,3) 有 10×3+3=33,总参数量 83。
3. torchinfo 库的 summary
  • 提供比 torchsummary 更详细的摘要,包括每层输入/输出形状、参数量、计算量等,常与 TensorBoard 配合使用。
  • 用法相同:summary(model, input_size=(4,))

二、进度条功能(tqdm)

tqdm 用于在循环中可视化训练进度。

1. 手动更新
python 复制代码
from tqdm import tqdm
with tqdm(total=10, desc="训练进度", unit="epoch") as pbar:
    for i in range(10):
        # 训练代码...
        pbar.update(1)          # 手动前进1步
        pbar.set_postfix({'Loss': f'{loss:.4f}'})  # 显示实时指标
  • desc:左侧描述文字;unit:进度单位(如 epochbatch)。
  • set_postfix 可在右侧动态显示字典形式的附加信息。
2. 自动更新
python 复制代码
for i in tqdm(range(10), desc="处理任务", unit="个"):
    # 循环体,无需手动update

直接将可迭代对象传入 tqdm(),自动完成进度更新。

在训练代码中的应用:创建总步数为 num_epochs 的进度条,每完成一定轮次后调用 pbar.update(n) 并刷新 postfix 显示损失值,最终确保进度条到达 100%。


三、模型推理(评估)

训练完成后在测试集上评估模型性能。

关键步骤
  1. 评估模式model.eval() 固定 Dropout、BatchNorm 等训练特定层,保证输出稳定。

    • 注意:此模式不自动关闭梯度计算,仍需手动处理。
  2. 禁用梯度with torch.no_grad(): 避免构建计算图,节省显存并加速推理。

  3. 预测与准确率

    python 复制代码
    outputs = model(X_test)
    _, predicted = torch.max(outputs, 1)          # 取每行最大值的索引作为类别
    correct = (predicted == y_test).sum().item()  # 正确个数
    accuracy = correct / y_test.size(0)           # 准确率
    • torch.max(outputs, dim=1) 返回最大值和索引,_ 忽略最大值,仅获取预测类别。
    • 所有操作在 GPU 张量上完成,无需转换到 CPU 或使用 sklearn,以保持高效。
知识串联
  • 训练阶段:定义损失(CrossEntropyLoss)与优化器(SGD),在循环中进行前向、反向和参数更新。
  • 推理阶段:模型参数固定,仅需前向传播,通过 eval() + no_grad() 确保高效、稳定的输出。
相关推荐
AI人工智能集结号1 天前
AI回答采集数据清洗:Python实现空回答、拒绝与无关样本识别
开发语言·人工智能·python
依晨照旧1 天前
uv 常用命令速查:一个工具干掉 pip + venv + pyenv + pipx + poetry,Python 工具链从此清爽
python
渣男教父1 天前
Python自动化操作 Word 和 PDF
后端·python
IPdodo_1 天前
Python 接入代理IP:爬虫网络优化实战
爬虫·python·网络代理·代理ip·ipdodo
kisloy1 天前
【爬虫入门第9讲】Python爬虫浏览器自动化
爬虫·python·自动化
星星在线1 天前
把复杂的事情简单化,我开源了PDF Report Generator
python
weixin_408099671 天前
2026 扑克牌识别 API 实战:识别牌值、花色、大小王(附 Python/Java/PHP 接入示例)
python·ocr·图像识别·api接口·接口开发·扑克牌识别·石榴智能
独行侠影a1 天前
Selenium 爬虫反爬实战:Python 模拟浏览器点击动态页面采集
爬虫·python·selenium
Li Ming&1 天前
Python连接MySQL数据库:从入门到实战(PyMySQL详解
开发语言·数据库·python·mysql
cts6181 天前
FDE架构师技术选型
python