PaddleSlim踩坑记录

项目场景:

最近,想用PaddleSlim来对我的efficientnetB0这个分类任务(pytorch模型)进行模型压缩,然天不遂人意,报了无数错误,才可以开始训练。需要注意的是我们训练出来的pt模型需要提前转换为onnx模型(对应yaml文件中的onnx format属性为True)或者paddle(对应yaml文件的onnx format改为False)格式。
训练代码可以参考我的另一篇文章:训练
数据的话,如果想使用自己的数据集,格式需要处理为ILSVRC2012的格式,处理代码参考这篇文章:数据集处理
踩坑如下:


问题一

问题描述

维度匹配失败,如图:
在这里插入图片描述

原因分析:

这里是因为我们转出onnx模型时设置的bs和PaddleSlim里设置的bs不对应,如我的就是导出onnx时的bs设置为1,而PaddleSlim里默认的32。

解决方案:

1、导出onnx时的bs设置为32
2、将PaddleSlim中你对应的yaml文件中的bs改为和你导出onnx时的一直,如我的,便在PaddleSlim/example/auto_compression/image_classification/configs/EfficientNetB0/qat_dis.yaml中进行如下修改:
在这里插入图片描述
不过建议还是方案一,如果问为什么,那我反问一句,训练模型的时候,为什么你设置的batch_size均为8的倍数,而不是1?


问题二

问题描述

报错如下:
在这里插入图片描述

原因分析

据开发人员说,是在config文件中设置了origin_metric参数(分类任务中一般为对应的yaml文件的最后一个参数),如图:
在这里插入图片描述

如果实际测试精度和填写的相差过大,便会报这个错

解决方案

1、删除origin_metric这个参数
2、将这个参数改为实际大小(建议保留2-3位小数,我这里改为0.9的时候,都出了这个错,直至改为0.939)


问题三

问题描述

报错如下:
在这里插入图片描述

原因分析

官方人员解释是:蒸馏节点设置的不对,程序会自动设置最后一个带参数op的输出为蒸馏节点进行训练,如图:
在这里插入图片描述

解决方案

删掉node这个参数,如图:

在这里插入图片描述


问题四

问题描述

报错如下:
在这里插入图片描述

原因分析

这个报错大概是因为我们的输入名字和配置文件不同

解决方案

将yaml文件中的第一个参数input_name设置为x2paddle_input,如图:
在这里插入图片描述


总结:以上就是我遇到的全部bug,由于资源问题,我这边训练到一半就结束了,所以压缩后的模型大小我这里就不做展示了,感兴趣的朋友可以做做。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值