项目总览
这个项目做的是 中文商品标题多分类。
输入是一条商品标题:
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.py 和 trainer.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()学习顺序
不要一开始就啃全部工程细节。建议顺序是:
- 先看
preprocess.py,明白数据怎么数字化。 - 再看
trainer.py的_train_one_step(),明白一次参数更新。 - 然后看
Trainer.train(),明白 epoch、batch、save_steps、evaluate 的调度。 - 最后看
evaluate(),明白验证为什么不更新参数。
如果你当前处于“文档很多但脑子很乱”的状态,先抓住这条主线:
text
raw data -> preprocess -> dataset -> dataloader -> batch -> model -> loss -> backward -> step