分类模型训练

把分类理论付诸实践,训练一个真正能分类的网络,在 Playground 中自由探索

知识课 · 约 30 分钟 · 更新于 2026-06-08

Softmax 回归的完整结构

上一课我们学习了 Softmax 函数和交叉熵损失。完整的分类模型结构是:

与线性回归对比:

实践:定义分类模型

用 nn.Linear(2, 2) 构建模型——输入 2 维特征,输出 2 个类别分数。配合 CrossEntropyLoss ,PyTorch 会在内部自动做 Softmax,因此模型本身只需要输出 logits。

实践:训练分类模型

训练循环的结构与课 4 线性回归训练 完全一致 ——这是关键洞察: 无论回归还是分类,训练五步法(数据→模型→损失和优化器→训练循环→评估)是不变的。

实践:预测与评估

训练后,用 torch.argmax 从输出概率中取出预测类别, 计算 准确率 (Accuracy):

Playground:分类模型训练

在这个 Playground 中,你可以自由调节学习率与 类间距离 , 点击「开始」让 Softmax 回归在你眼前从零训练到收敛。

类间距离 :两类样本中心在 轴上的间距。值越大,两团数据离得越远、越容易区分;值越小,两团互相重叠越多、决策边界越难学。

下面先看懂三张图分别在画什么:

  • 上方决策面图——训练数据 + 模型预测 图上每个 圆点 代表一个训练样本, 蓝点 是「类别 0」(标签 ,集中在左侧), 橙点 是「类别 1」(标签 ,集中在右侧) 背景色块 是模型对平面上每个位置的预测: 浅蓝处模型预测「类别 0」, 浅橙处预测「类别 1」,颜色由浅蓝过渡到浅橙的中性地带就是 决策边界 怎么判断训练得好不好? 看圆点是不是都落在与自己同色的背景上——全部命中就说明模型把这两类分对了
  • 左下——交叉熵损失曲线 :随训练逐步下降并趋于平稳,代表模型在拟合
  • 右下——准确率曲线 :逐步攀升并稳定在接近 1 的位置,代表分类几乎全对

后台用 TF.js 训练 tf.layers.dense({units: 2, activation: 'softmax'}) 模型;每帧多步训练后,重新预测整个 2D 网格,得到背景中颜色编码的决策区域。

回顾与总结

回顾整个图谱,回归和分类的代码有什么异同?