实验心得,包括代码复现工作的体会

实践是检验真理的唯一标准
resnet20,cifar100.
Direct training:
和原论文一样的参数
64.45
time step 1, Accuracy = 0.5918
time step 2, Accuracy = 0.6320
time step 4, Accuracy = 0.6446
time step 8, Accuracy = 0.6531
time step 16, Accuracy = 0.6608
time step 32, Accuracy = 0.6631
和原论文69.97相差比较大。

加了部分预处理,参数不变(这里参数改成和下面一样变说不定就可以):
64.69
time step 1, Accuracy = 0.5931
time step 2, Accuracy = 0.6319
time step 4, Accuracy = 0.6387
time step 8, Accuracy = 0.6483
time step 16, Accuracy = 0.6601
time step 32, Accuracy = 0.6645
实验证明:原论文在扯淡。鉴定完毕。

师哥full precision pretrain,然后做finetune

  • epoch = 200
    lr = 0.01
    wd = 1e-5
    128 sgd cosine

69.24 可以达到原论文的精度。
time step 1, Accuracy = 0.5398
time step 2, Accuracy = 0.6123
time step 4, Accuracy = 0.6373
time step 8, Accuracy = 0.6618
time step 16, Accuracy = 0.6954
time step 32, Accuracy = 0.7061

总结

  1. 对于cifar10来说,按照原论文直接训练量化网络的效果不错,这是因为cifar10是最简单的数据集;但是杜宇cifar100来说,如果去除了预训练的模型,效果就大打折扣-5%,因为训练难度升高了。
  2. 直接训练一个全精度的网络对于cifar100也要load一个pretrain的model,精度才能达到很高
  3. 一般量化过程是,先导入一个pretrain的model(这个model就是原始的vgg或者resnet里的model)这样可以直接load进来,然后再改模型,这样模型的参数并不是全部随机的,而是已经有部分是最优的。
    而一般导一个自己模型训练好的模型的顺序是先把模型改好再导入你用该模型训练好的pth文件,这样才能load进来,逻辑上有些不同,体现在导入这个过程是在更改模型前还是后。
  4. finetune的过程要把学习率和wd设置的小一点epoch也可以小一点,上面那个finetune的过程是 lr=0.01.wd=1e-5 (直接训练为0.02,wd=5e-4)

泽凯哥:
多卡训练注意调整:batch_size * 4, lr * 2(根号下)
torch.optim.lr_scheduler.ReduceLROnPlateau

理想状态下的收敛效果:
在这里插入图片描述

pip intall fasteai
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值