如何提高深度学习代码能力
個人經(jīng)歷:一個正在努力提高自身代碼能力和實踐能力的求職人員。
背景:想通過幾個實踐項目提高工程實踐能力和底層代碼能力。提出這個問題是因為自己對深度學習的探究更多停留在能根據(jù)文章看懂代碼,能根據(jù)代碼更深入地理解文章的階段,能修改他人代碼為自己所用的階段。而工程實踐必須更進一步到能寫出自己的代碼。在網(wǎng)上查閱和提問后,得出他人的幾個回答,在此記錄,以便以后能查閱自己在這段時間的想法和學習的方向。也歡迎經(jīng)驗豐富的前輩評論如何寫出深度學習代碼這一問題。
回答1:(來自知乎)很多新手初學機器學習,上來就追求復雜的深度學習模型和高大上的算法如AlexNet, ResNet。tensorflow和keras各種API全部調(diào)用一遍,卻不知道自己在干什么,俗稱調(diào)包俠。一個觀點:脫離實際業(yè)務和數(shù)據(jù)的算法都是空中樓閣。一條路徑:按照我的學習經(jīng)驗,從數(shù)據(jù)清洗到特征工程,再用最傳統(tǒng)的算法把整個流程走一遍,不斷的比較和嘗試各種算法,把特征和算法搞透,才是最快最靠譜的學習方法。兩個項目:國外的Kaggle和阿里云天池都是獲取項目經(jīng)驗的好途徑。我的建議是每個入門機器學習的人都應該參加兩個項目。一個傳統(tǒng)機器學習應用場景的項目,如阿里移動推薦算法。通過傳統(tǒng)應用場景熟悉邏輯斯特回歸,支持向量機和梯度增強決策樹等算法。一個深度學習應用場景的項目,如肺癌識別和診斷,通過深度學習應用場景熟悉深度學習各種算法的優(yōu)勢和應用場景。
回答2:(來自知乎)1) 詳細理解每一個深度學習模塊的功能,實現(xiàn)細節(jié);2) 在1)的基礎上獨立實現(xiàn)一些簡單的深度學習框架;本人從Andrej Karpathy的convnet.js學習了很多;基本可以from scratch的擼一個可以用的動態(tài)圖的深度學習框架(當然遠效率不如現(xiàn)成大庫pyTorch, TensorFlow等)3) 在2)的學習過程中或者更好的是快速學習完成之后,開始著手研究自己領域的相關論文,手動實現(xiàn)論文中的算法,并和論文開源代碼的最后結果進行比較,以驗證自己寫得正確;4) 進入正循環(huán)階段,讀paper,寫code,想idea,寫code…
回答3:純手寫一個框架比較難,在剛開始,如果做工程實踐,可以先跑通別人的代碼,然后深入理解代碼和原理。目前很多公司都是在別人的工作基礎上作優(yōu)化,調(diào)整和裁剪。
回答4:初級階段,用別人的代碼改,了解一下代碼框架,弄清楚原理,寫論文要創(chuàng)新,但同時也強調(diào)要會調(diào)用一些現(xiàn)有的函數(shù)、代碼和已有成果。
回答5:自己寫一個框架比較難,基本上是在代碼上改動,部分是自己寫,一點點改。從改進別人的模型開始,如果要設計自己的模型就得花很長時間。但一旦設計出來,就能成長很多。
回答6:代碼寫的出來是一方面,能達到最好的性能又是一方面。同樣的數(shù)據(jù)集,同樣的模型,不同的人做出來差別就很大。
總結:正確判斷自己處于哪個階段很重要。處于哪個階段就要找到自己這個階段的正確實踐方法才能達到你最初的目的。我正處在初級階段,仍然以修改已有的框架和代碼,部分自己寫,深入理解代碼的原理,適當改進模型為主。
總結
以上是生活随笔為你收集整理的如何提高深度学习代码能力的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在线造字做字库、 红莓繁星技传神-逐浪点
- 下一篇: You need Perl 5.