-
Notifications
You must be signed in to change notification settings - Fork 11
Description
大佬您好,首先感谢您的分享。我运行了一下这份代码,主要跑了mobilevit和mobilenet两个网络,目前有一些问题想问您。
1,直接下载原代码,不改网络结构与参数,得到的精度和readme里的表格有差距。
Mobilevit_s,第160个epoch时,train_acc:0.931(表格中是98.83%);valid_acc:0.906(表格中是92.50%),再继续训练发生过拟合,精度下降。
Mobilevit_xs,第160个epoch时,train_acc:0.925(表格中是98.22%);valid_acc:0.895(表格中是91.77%)
Mobilenet v1,train_acc:0.891; valid_acc:0.869(表格中是89.18%)
我用的GPU是Nvidia 1080Ti,不知道为什么精度会差这么大,请问您得到这些结果,每个网络用的参数是什么?
args.py文件里下载下来时是resnet20。resnet20倒是比表格中的好一点,valid_acc:0.906(表格中是89.72%),可能是因为您刚好跳的这个网络?
2,我尝试自己调试了下,按照mobilevit原项目的参数,把lr改成0.01,weight-decay改成1e-5,依然表现很差
mobilevit_xxs,train_acc:0.984 (表格中是96.4%); valid_acc:0.870(表格中是90.17%);
3,这个问题并不是很重要,就是我跑mobilenet v2的时候,发现训练速度很慢,比mobilevit都慢很多,gpu利用率只比mobilevit高一点点。train_acc:0.989 ,valid_acc:0.899也比表格低
我跑这个项目的目的是为了压缩mobilevit,所以我进行了一些其他实验,只是调调参,还没有使用蒸馏剪枝等操作。如果您有兴趣,可以探讨一下吗?
我试过把mobilevit里的mobilenet v2模块改成了mobilenet v1,试过改patch_size(2,2)到(4,4),试过把残差消掉,试过改heads数量(这里您使用heads=1,dimheads=32,不知道您怎么考虑的,那篇复现mobilevit的博客用的heads=4,dimheads=8)。
总之不管我怎么改,精度都在0.87左右,甚至于我把mobilevit block里的transformer去掉,参数量由1014672变成了339408,精度还是0.863.
很抱歉写这么多打扰您,但是我水平有限,实在搞不懂原因。期待您的回复。