FastAI训练中train_loss/valid_loss下降但error_rate仍为1.0的原因
问题描述
我使用FastAI开展模型实验,已下载Kaggle手指数据集并运行以下代码。令我困惑的是,随着训练轮次(epoch)增加,train_loss和valid_loss持续下降,但error_rate始终维持在1.0,请问这是什么原因?
运行代码
import fastai ... fingers = DataBlock( blocks=(ImageBlock, CategoryBlock), get_items=get_fingers, splitter=RandomSplitter(valid_pct=0.2, seed=42), get_y=get_finger_label, item_tfms=Resize(128) ) processed_fingers = fingers.new(item_tfms=RandomResizedCrop(128, min_scale=0.3), batch_tfms=[*aug_transforms()]) dls = processed_fingers.dataloaders(fingers_path) learn = vision_learner(dls, resnet34, metrics=error_rate) learn.fine_tune(10)
训练结果
| epoch | train_loss | valid_loss | error_rate | time |
|---|---|---|---|---|
| 0 | 2.198208 | 1.956572 | 1.000000 | 00:13 |
| 1 | 2.032756 | 1.902029 | 1.000000 | 00:14 |
| 2 | 1.878275 | 1.385014 | 1.000000 | 00:13 |
| 3 | 1.759558 | 1.290756 | 1.000000 | 00:13 |
| 4 | 1.691477 | 1.159635 | 1.000000 | 00:13 |
| 5 | 1.620937 | 1.038525 | 1.000000 | 00:14 |
| 6 | 1.539983 | 0.905508 | 1.000000 | 00:13 |
| 7 | 1.486607 | 0.803955 | 1.000000 | 00:14 |
| 8 | 1.426649 | 0.765863 | 1.000000 | 00:14 |
| 9 | 1.364154 | 0.763216 | 1.000000 | 00:14 |
原因分析与排查步骤
这种情况核心是模型的分类预测和真实标签完全不匹配,但损失函数仍能正常下降,常见原因及排查方法如下:
- 标签提取逻辑错误:
get_finger_label函数可能存在bug,比如从文件路径/名称提取标签时出错,导致所有样本的标签被映射为同一个值,或者标签与实际类别完全错位。比如数据集样本是不同手指数量的图片,但函数提取的标签全是同一个类别,此时模型会朝着最小化该类别的损失优化,但所有预测都和真实标签不符,error_rate保持1.0。 - 类别映射错位:CategoryBlock自动生成的类别词汇表(
dls.vocab)和get_finger_label返回的标签顺序不匹配。比如模型内部将类别编码为[0,1,2,3,4,5],但你的标签实际对应[5,4,3,2,1,0],此时模型的预测结果和标签完全反向,损失会下降但分类全错。 - 数据加载异常:虽然loss在下降,但需确认验证集的样本标签是否在模型的类别范围内,或者
RandomSplitter是否导致验证集样本的类别分布和训练集完全脱节(不过这种情况loss下降的概率较低)。
具体排查步骤
- 检查类别词汇表:运行
print(dls.vocab),确认类别是否和数据集实际的手指类别(比如0-5根手指)一致。 - 可视化样本标签:运行
dls.show_batch(),查看图片对应的标签是否正确,确认图片和标签的对应关系没问题。 - 验证标签函数:手动选取几个样本路径,调用
get_finger_label函数,检查返回的标签是否符合预期。 - 查看混淆矩阵:运行以下代码生成混淆矩阵,直观查看模型预测的分布:
如果混淆矩阵里只有某一行或某一列有值,说明模型所有预测都集中在一个类别,大概率是标签提取或映射的问题。interp = ClassificationInterpretation.from_learner(learn) interp.plot_confusion_matrix()
内容的提问来源于stack exchange,提问作者thiagoh
相关产品推荐
相关产品推荐

