學習深度學習,在學習過程中需要自己搭建神經網路嗎?還是理解網路即可?
先說結論:需要自己搭建網路
理解網路是必要的,而且理解的領域越多越好,分類、檢測、分割、ReID等等,各個領域的方法相互啟發,對於深度學習是很有幫助的
但是前提是,你必須對深度學習神經網路有一個直觀的認識。而獲取這種直觀認識的最好方式就是自己一層一層的搭網路
記得我那會剛學深度學習的時候,一開始也是先看論文,覺得這個好厲害那個好厲害。後來看論文源碼自己造輪子的時候,才發現有些論文裡面大吹特吹的點,可能就短短几行,不是多麼複雜的東西。看了寫了代碼之後,才能體會到深度學習並不是那麼複雜那麼高大上的東西,慢慢的對深度學習就有了直觀的認識,學習其他東西也快了
建議題主先選定一個框架(推薦pytorch),參考開源代碼,從零開始造輪子,儘力去復現論文的精度。這個過程題主會收穫代碼工程能力,對論文有更全面的理解,更重要的是深度學習不再神祕
BTW,在復現的過程中,可能會發現很多含糊不清的地方,或者會有一些idea,能發篇paper也不一定。祝好
如果有創新性的想法,就需要自己搭建神經網路結構,來實現一些以前沒有的功能。
尤其是神經網路與經典信號分析方法的結合,有希望進一步提高神經網路的性能。
例如,如果數據含有大量雜訊,這時候可以在神經網路中加入軟閾值化,就像殘差收縮網路,這樣可以在一定程度上減輕雜訊的影響。
1.先搞懂原理
2.再跑通已有的代碼
3.自己把已有的代碼抄一遍,抄到不懂的地方去查文檔(推薦查官方文檔)。
4.改動一下已有代碼的網路結構、嘗試實現自己的想法,搭建自己的模型
初學者建議入手pytorch,搭建網路很方便(相見恨晚),tensorflow學習曲線有點陡。 學pytorch看官方網站的教程就可以,然後去github找star最多的那個項目抄一遍基礎模型的代碼就基本熟悉pytorch了。
另外如果剛接觸深度學習,推薦看吳恩達的深度學習課程,網易雲課堂上可以免費看,課後作業跟著做一下,github上面有。
學習過程中肯定要知道如何自己搭建神經網路的,即使用預訓練模型,也會有自己修改網路結構的時候。
實現一個網路,觀察它的實驗現象,能極大地加深你對他的認識和理解。在實驗過程中,忽略任何一個細節都可能會導致得不到論文中的結果。這些細節往往很重要,但讀論文時卻容易被忽略。但也不是每看一篇都要復現。重要的感興趣的論文優先。
推薦閱讀: