論文代碼復現常見問題


場景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