如何提升自己的實現(xiàn)idea的代碼能力
先插一句哈,之后可能會不定期在朋友圈抽獎送幾本書【因為公眾號沒留言功能】,感興趣的朋友可以加我微信【dasounlp】圍觀朋友圈哈~~
在知乎看到一個問題:【對自己深度學習方向的論文有idea,可是工程實踐能力跟不上,實驗搞不定怎么辦?】
這個問題其實非常常見,有些時候靈光一現(xiàn),出來個idea,但是在實現(xiàn)的時候,發(fā)現(xiàn)自己無從下手,不知如何做起;
出現(xiàn)這種情況的原因就一個:
代碼看到少,寫得少;
說一個比較極端的情況,如果大家把自己這個方向的所有論文的代碼都從頭到尾搞得明明白白,清清楚楚;每一行代碼都知道在干嘛,輸入是什么形式,輸出是什么形式;
那么在實現(xiàn)idea的時候,真的是信手拈來的;
當然,這肯定是非常的極端的情況,因為幾乎沒有人可能把所有論文和代碼都搞得這么透徹,時間和精力肯定是不夠的;
那么這種情況下,我們怎么做的?
我自己總結了三個步驟:
把你這個方向最基礎的論文【挑5篇,無上限】代碼扒下來,一步步搞清楚在做什么,然后搞一個思維導圖,每天晚上睡覺之前自己復述一遍,確保代碼基礎操作沒問題;
在1這個基礎之上,挑選這個方向比較前沿的方向的論文的代碼,看核心創(chuàng)新點,看實驗細節(jié)是怎么操作的,最重要的是去看核心創(chuàng)新點的代碼是怎么寫的;在這一步,去看關鍵部分的代碼就可以,然后分門別類記錄下來,比如這個論文的改進點在attention,這個論文改進點在增加了殘差等等,記住,把對應的核心代碼也記錄下來;
靈光一現(xiàn),腦子中有了一個創(chuàng)新點,在2的基礎上看有沒有類似的論文代碼,有的話就扒下來,魔改一下,沒有的話,依靠1的基礎和2的基礎自己寫出來;
記住,除了第一步你需要從零開始搞清楚代碼在干啥,別的時候不需要重頭復現(xiàn),太費時間;
把上面三個步驟總結一下就是,先打好基礎,把Pytorch/TF的各種基礎的操作和基礎模型架構搞清楚,然后追前沿論文,搞定自己感興趣的前沿論文里面核心創(chuàng)新點對應的代碼,然后依靠前兩步驟的基礎,完成自己的idea的實現(xiàn);
在第三步中,可以依照自己idea去搜一下相關論文,看有咩有類似代碼的實現(xiàn),也是非常不錯的途徑;
這個過程中,有個非常重要的問題,就是如何學習相關代碼?
神經(jīng)網(wǎng)絡這塊的代碼一般可以分為三個部分:數(shù)據(jù)預處理,模型架構,訓練+驗證;
在數(shù)據(jù)預處理這塊,不同方向的預處理代碼一般都不同;自己方向的看一個比較較清晰的代碼,之后用的時候就沿用這個處理代碼就可以;
在模型架構這塊,注意兩個東西,一個基礎架構怎么寫,比如卷積怎么寫,dropout放在哪里比較好等等;另一個就是一定要注意輸入形式和輸出形式,這個非常重要。
訓練和驗證這塊,都是一些常規(guī)操作,比如怎么保存最好的模型,學習率和優(yōu)化器的使用等等;
總之各種騷操作,在看代碼的時候理清楚,然后隨手記下來;
代碼和學習筆記之類的東西最好是分門別類,大概是這個樣子:

一個清晰的代碼和知識筆記,就是你的武器庫,干啥都不誤。
最近超累,所以沒時間看論文,不過經(jīng)驗文章的分享,也希望大家喜歡,比如上一個文章:如何做到極致的專注
總之,如果覺得寫的還行,求點贊,求在看,求轉發(fā),求一切。理科生不太會運營,只能寄希望于大家了;
