论文代码复现常见问题


场景1:代码太慢

1:写出基础代码

  • 使用少量数据集来实践你的思路,代码可以不用很优化,优先写出来即可。写完后建议封装为函数,方便调用

2:优化代码逻辑

  • 代码本身足够高效吗?
  • 代码是否利用了所有的CPU/GPU?
  • 常用优化过程
    下标循环
df1 = df
for i in range(len(df)):
    if df.iloc[i]['test'] != 1:
        df1.iloc[i]['test'] = 0

Iterrows循环

i = 0
for ind, row in df.iterrows():
    if row['test'] != 1:
        df1.iloc[i]['test'] = 0
    i += 1

Apply循环

df1['test'] = df['test'].apply(lambda x: x if x == 1 else 0)

内置函数

res = df.sum()

Numpy函数

df_values = df.values
res = np.sum(df_values)

3:提高资源利用率

  • 当逐步对Pandas和Numpy的熟悉过程中,会发现自己的代码也运行的越来越快。如果最终代码都是用内置函数实现,基本上已经很好了。
  • 但也可以进一步优化,因为Pandas很多操作都是串行单线程执行,所以可以手动开多线程进一步加速数据的计算过程,把所有CPU用上,或使用cuDF利用GPU加速。

场景2:新领域无从下手

  • 阅读目标领域内近3-5年顶会论文,特别是综述论文。
  • 收集公开赛事或榜单上学习Top名次的解决方案,包含思路和代码。

场景3:复现别人的论文

1:找到有开源代码的论文

  • 在Github上找到历史的有代码的论文,这些论文项目虽然比较旧,但参考价值很大。

2:整理好数据集的加载

  • 搞清楚数据集怎么制作怎么加载怎么输入怎么计算怎么输出,数据集如何处理,如何编码。

3:搭建论文模型

  • 基于论文思路整理好模型结构,有多少层,每层的细节,每层的维度,一步一步搭建。保证模型可以正常训练和预测。

4:确定训练细节

  • 根据论文实验部分的细节,确定具体的batch、epoch、学习率和优化器,确定训练的流程没有问题。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM