分类模型训练

把分类理论付诸实践,训练一个 Softmax 分类模型,在 Playground 中调节参数观察训练过程

知识课 · 约 30 分钟 · 更新于 2026-07-14

Softmax 回归的完整结构

有了 Softmax 函数和交叉熵损失,完整的分类模型结构是:

与线性回归对比:

实践:定义分类模型

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

实践:训练分类模型

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

实践:预测与评估

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

Playground:分类模型训练

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

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

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

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

回顾与总结

线性回归与 Softmax 分类的代码对比: