百度复现营课程:https://aistudio.baidu.com/aistudio/education/group/info/1340
论文笔记:https://zhuanlan.zhihu.com/p/168318224
https://zhuanlan.zhihu.com/p/208805217
论文:https://arxiv.org/pdf/1804.09066.pdf
代码:https://github.com/mzolfaghari/ECO-pytorch
一、复现方式
尽可能移植pytorch代码到Paddle的方式,上手快,需要读懂原来的代码。原论文代码从TSN pytorch移植过来,有关代码解读可参阅如下两篇文章,写的很详细。ECO pytorch代码与TSN代码基本一致。
1.TSN算法的PyTorch代码解读(训练部分)
TSN算法的PyTorch代码解读(训练部分)_AI之路-CSDN博客blog.csdn.net
2.TSN算法的PyTorch代码解读(测试部分)
https://blog.csdn.net/u014380165/article/details/79058381?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
二、主要步骤
百度复现营的老师论文复现的步骤和要点讲解的非常详细,手把手教如何复现论文。
下面重点说一说移植过程中遇到的一些坑。
1.超参数
论文中提到的主要超参数:The initial learning rate is 0.001 and decreases by a factor of 10 when validation error saturates for 4 epochs. We train the network with a momentum of 0.9, a weight decay of 0.0005, and mini-batches of size 32。
原代码移植到AI Studio平台时,Batch size一般用16,设置太大了,GPU内存溢出。
2.数据处理
图像处理部分需要对原代码使用torch.vision.Transformer的相关内容进行改写,paddle2.0中也有类似的版本。pytorch与paddle的dataset,dataloader的用法不一样,需要按照paddle的方式改写。
3.模型搭建
原代码采用yaml文件描述模型,采用动态方式搭建网络和前向计算。两个框架的算子和数据格式有差异,这个地方核对模型的结构和数据格式,直到模型的输入、输出和正向计算都正确无误。
pytorch的预训练模型可以通过代码转换到paddle来使用,需要注意模型和数据对齐。遇到的一个坑是pytorh转换到paddle的模型,在windows里没法加载,只能在linux下用。
4.优化器定义
pytorch原代码的优化器定义、调整和梯度裁剪分成了三部分,在paddle中可以在定义时就把动态调整的方式确定了,相对来说比较方便。
5.训练和测试过程
原代码训练过程中用了模型重载的train()方法,在Paddle代码中需要修改过来,不然会出现训练一轮、测试一轮就报错。
6.对齐
网络对齐、数据对齐和精度对齐是最花时间的地方,也是坑最多的地方。两个框架都有类似的方法处理数据,但输入和输出是大多不一致,需要仔细对照文档进行调试。
赞!