ECO论文复现记-百度顶会论文复现营(飞桨)
hujx 发布于2020-08-31 23:06 浏览:1066 回复:1
1
收藏

百度复现营课程: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.对齐

网络对齐、数据对齐和精度对齐是最花时间的地方,也是坑最多的地方。两个框架都有类似的方法处理数据,但输入和输出是大多不一致,需要仔细对照文档进行调试。

收藏
点赞
1
个赞
共1条回复 最后由188******76回复于2020-09-02 23:37
#2188******76回复于2020-09-02 23:37:14

赞!

0
TOP
切换版块