Skip to content

项目总览

这个项目做的是 中文商品标题多分类

输入是一条商品标题:

text
男士运动鞋夏季透气

输出是一个商品类别:

text
服饰内衣 / 鞋靴箱包 / 家电 / 食品 ...

技术路线可以压缩成一句话:

text
商品标题 -> BERT 分词 -> BERT 编码 -> Linear 分类头 -> 类别分数 -> 预测类别

你真正要看懂的四个文件

文件角色你应该怎么理解
src/preprocess.py数据预处理把原始中文文本和中文标签变成模型能吃的数字
src/train.py训练入口组装 tokenizer、model、dataset、Trainer
src/trainer.py训练发动机真正执行 epoch、batch、loss、backward、step、evaluate、save
src/evaluate.py / src/predict.py评估与预测加载训练好的模型,做验证或单条预测

最容易混乱的是 train.pytrainer.py

text
train.py   = 组装工厂
trainer.py = 训练发动机

train.py 本身不是训练循环,它负责把零件准备好:

python
tokenizer = AutoTokenizer.from_pretrained(...)
model = AutoModelForSequenceClassification.from_pretrained(...)
train_dataset = load_dataset_split("train")
valid_dataset = load_dataset_split("valid")
trainer = Trainer(...)
trainer.train()

真正每个 batch 更新一次参数的地方在:

python
Trainer._train_one_step()

学习顺序

不要一开始就啃全部工程细节。建议顺序是:

  1. 先看 preprocess.py,明白数据怎么数字化。
  2. 再看 trainer.py_train_one_step(),明白一次参数更新。
  3. 然后看 Trainer.train(),明白 epoch、batch、save_steps、evaluate 的调度。
  4. 最后看 evaluate(),明白验证为什么不更新参数。

如果你当前处于“文档很多但脑子很乱”的状态,先抓住这条主线:

text
raw data -> preprocess -> dataset -> dataloader -> batch -> model -> loss -> backward -> step