← 课程库
地基 · 数学与工程模块一 · 综合项目项目20 分钟

阶段项目:用 PyTorch 训一个文本分类器

把地基段所有零件跑通一遍

学完这节你能:
  • 独立跑通「数据→模型→训练→评估」全流程
  • 用精确率/召回率/F1 评估结果
  • 为进入 Stage 1 做准备

地基段的收尾:亲手训一个情感二分类器(正面/负面评论)。目标不是刷高分,而是把前 13 节的零件——张量、训练循环、损失、评估指标——真正串起来跑通。

  1. 数据:取一个小型中文/英文情感数据集,按 8:1:1 划分训练/验证/测试。
  2. 预处理:分词 → 建词表 → 转成 id 序列(用平均词向量或 bag-of-words 作最简特征)。
  3. 模型:一个 nn.Module(Embedding + 平均池化 + Linear),输出 2 类。
  4. 训练:标准五步循环,交叉熵损失,AdamW 优化器,跑若干 epoch。
  5. 评估:在测试集上算准确率、精确率、召回率、F1;画混淆矩阵。
模型骨架
class TextClassifier(nn.Module):
    def __init__(self, vocab, dim=64):
        super().__init__()
        self.emb = nn.Embedding(vocab, dim)
        self.fc = nn.Linear(dim, 2)
    def forward(self, ids, mask):
        e = self.emb(ids)                       # (B, T, dim)
        pooled = (e * mask.unsqueeze(-1)).sum(1) / mask.sum(1, keepdim=True)
        return self.fc(pooled)                  # (B, 2)

💡 验收标准:能跑完不报错、测试集 F1 明显高于瞎猜(>0.6)、能解释每个指标的含义。做到这三点,你就具备进入 Stage 1 的工程与数学地基了。

🔑 注意这里的「平均池化」已经用到了掩码求平均(mask mean pooling)的思想——它会在 Stage 4 的 RAG 里再次出现。地基不是白打的。

自测这个文本分类项目里,用来报告「最终泛化能力」的应该是:
// 带走一句话

亲手跑通「数据→模型→训练五步→用 P/R/F1 评估」,就打好了进入大模型学习的地基。

独立练习

做到这些,才算完成本节

  1. 把任务拆成可运行的最小步骤,每一步都保留输出证据。
  2. 提交 README、结果、失败分析和下一次改进计划。
学习记录

记录本节阅读进度

建议先独立回答自测。读完记录不等于已经掌握。

继续下一课
← 上一课
ROC 与 AUC:阈值、TPR、FPR
下一课 →
自然语言的特点:离散、歧义、序列

学完不要急着赶进度:去练习自测,或完成对应的阶段实验