1. 程式人生 > >【原】深度學習的一些經驗總結和建議 | To do v.s Not To Do

【原】深度學習的一些經驗總結和建議 | To do v.s Not To Do

前言:本文同步釋出於公眾號:Charlotte資料探勘,歡迎關注,獲得最新干貨~  

  昨天看到幾篇不同的文章寫關於機器學習的to do & not to do,有些觀點贊同,有些不贊同,是現在演算法崗位這麼熱門,已經不像幾年前一樣,可能跑過一些專案、懂點原理就可以了,現在對大家的要求更高,尤其工程能力更不可缺少,只跑過一些iris鳶尾花分類、啤酒與尿布、貓狗分類等的同學需要再提高提高,因為競爭太激烈了,我在這裡結合我自己的經驗總結一下吧~

 

To Do

  • 做專案時,邊蒐集資料可以邊用已經蒐集好的少部分資料跑模型。不用等到所有資料都蒐集好了再跑。

  • 不知道什麼演算法合適,可以直接把所有的演算法都跑一遍,看效果再選擇,多跑幾個應用場景你就知道什麼演算法適合什麼場景,什麼資料對不同的演算法會有什麼影響了。

  • 不知道什麼引數是最佳引數,可以用random search或者grid search自動搜尋最佳引數組合,有經驗以後對於每個引數的大概範圍心裡會有個數。

  • 一定要練習工程能力,只會調參的demo俠現在很難找到工作啦。

  • 模型復現和刷題是很好的鍛鍊工程能力的一種方式。

  • 刷題不要追求數量,要總結不同型別的題目的經驗,並結合之前的業務中,看能不能優化之前的業務邏輯。

  • 模型復現可以給自己規定一個任務,譬如在一個月內,把某篇論文的Tensorflow實現的程式碼,復現成Pytorch或者PaddlePaddle等其他框架的程式碼,不是閒著沒事做,而是模型復現可以迅速提高你對框架的熟悉度和程式碼能力。

  • 模型復現的過程中,最難的是寫新的op和模型效果(精度和速度)的對齊。這可能很折磨人,但是收穫也很大。

  • 如果要做新專案,可以先看看有沒有預訓練模型,可以快速做遷移學習的,如果有,那麼整體的模型週期會快很多。

  • 如果跑完演算法,一定要有一個成品的形態,最好不要只做演算法這一塊,譬如跑完模型將其打包封裝成服務介面(服務端和移動端等),達到讓人可用的狀態最好。

  • 領導不想知道過程,只想知道結果。沒有可用的東西和視覺化的結果,他會覺得你啥也沒做。

  • 上條只針對部分領導。

  • 沒有人會比你更關心模型的引數調整導致模型的效果提升了0.1%還是1%,大多數人,尤其是leader、或者leader的leader,只關心它有什麼用,真實場景的效果好不好。

  • 可以多和同事、同行等互相交流,參加線下的學習會、交流會等,可能會有意想不到的收穫。

  • 學習新的演算法,先把程式碼跑起來再說,再來看理論、數學推導、自己手寫實現等。

  • 除了調參以外,還需要關注關注部署上線、模型壓縮等方面的內容。

     

  

Not To Do

  • 訓練資料不要太乾淨了,因為真實場景的資料往往和實驗資料差很多,嘗試加點噪音吧,做些資料增強和mixup等。

  • 論文裡的效果不一定能復現。可以嘗試論文的思路,但是不要太過相信論文裡的效果資料。

  • 做一個專案就好好深挖,不僅僅要做出來,還要不斷的優化,不然每個專案都只是跑通了,效果還行,沒必要寫到簡歷裡,不如寫一個做的很深入,嘗試了各種優化方法並有效果提升的專案。

  • 不要因為覺得自己數學不好就先去惡補數學,買一堆高等代數、數學分析、實變函式、複變函式等純數學書,如果一定要看,推薦《線性代數》《資訊理論》《凸優化》《數值分析》。

  • 上條推薦的四本數學書也不用全看,凸優化太厚了,其他三本可以在自己有大塊時間可以刷書的時候,規定自己在一個月或者幾個月的時間迅速刷完。線性代數是基礎,數值分析是優化方法(也不用全看),凸優化與資訊理論與目標函式相關,涉及機器學習的很多理論知識。

  • 不要覺得你訓練的模型效果多好就多麼厲害,除非是做科研、打比賽、工業界更關注能不能落地,能不能應用產生價值,不要自high = =

  • 如果把你的演算法封裝成服務了,也要做做壓測,學習下工程方面的內容。

  • 最好的狀態是,工程能力強,又懂演算法,兩者結合,效果更佳。不要只注重某一方面的提升,多關注下自己的程式碼風格,不要讓你的同事code review的時候犯難 - -

 

 

  暫時想到這些,每條都是試錯後的血淚教訓的總結T_T,有補充的歡迎大家在下面留言~

 

相關推薦

深度學習一些經驗總結建議 | To do v.s Not To Do

前言:本文同步釋出於公眾號:Charlotte資料探勘,歡迎關注,獲得最新干貨~     昨天看到幾篇不同的文章寫關於機器學習的to do & not to do,有些觀點贊同,有些不贊同,是現在演算法崗位這麼熱門,已經不像幾年前一樣,可能跑過一些專案、懂點原理就可以了,現在對大家的要求更高,尤其工

個人java專案經驗總結

寫在前面的話 -“雖然我之前沒做過xxx,不過用xxx應該很簡單。” -“沒做過就別說很簡單!” 目錄 一、運算子,基本型別和四則運算 1.1 負數的餘數,如何優雅地避免陣列下標越界 1.2 你確定你的if判斷式裡是'=='而不是=? 二、類,介面的設計 2.1 引數列

專欄 - 深度學習進行目標定位識別

深度學習進行目標定位和識別 在這個專欄中,我們以RCNN作為首先第一篇,然後講解spp net,Fast RCNN,以及Faster RCNN,還有YOLO等等網路結構,按它的提出順序(因為後面提出的網路往往是針對前面網路的問題而

深度學習基礎概念理解

器) 好處 網站 water weight tar 直觀 str view 原文鏈接 神經網絡基礎 1)神經元(Neuron)——就像形成我們大腦基本元素的神經元一樣,神經元形成神經網絡的基本結構。想象一下,當我們得到新信息時我們該怎麽做。當我們獲取信息時,我們一般會處

speakingtask3 到 task6 經驗總結

mea con 經驗 ann pro topic think min mat 口語 task3 邏輯關系 R:      What     / \     r1   r2L:    |    |   d1    d2

Java學習筆記034 - 網絡

端口號 bre throws clas 編程 綁定 容器 名稱 套接字 1 package cn.temptation; 2 3 import java.net.InetAddress; 4 5 public class Sample01 {

轉載深度學習框架對比

 深度學習研究的熱潮持續高漲,各種開源深度學習框架也層出不窮,其中包括TensorFlow、Caffe、Keras、CNTK、Torch7、MXNet、Leaf、Theano、DeepLearning4、Lasagne、Neon,等等。然而TensorFlo

javascript學習筆記之this用法

javascript中的this學習起來相對複雜,最近花了點時間研究,總結起來大概這隻有5種情況,相信只要熟悉這5種用法,基本是可以解決所有的this問題,文字不介紹this設計原理,只介紹用法,閱讀本文,你需要了解javascript執行上下文環境,博主寫這種文章的目的,主要還是給自己做下筆記,後續也會輸出

Tensorflow深度學習實戰06——Tensorflow實現ResNet

前言   ResNet(Residual Neural Network)由前微軟研究院的 Kaiming He 等4名華人提出(有興趣的可以點選這裡,檢視論文原文),通過使用 Residual Blocks 成功訓練152層深的神經網路,在 ILSVR

連載深度學習筆記8:利用Tensorflow搭建神經網路

      在筆記7中,和大家一起入門了  Tensorflow 的基本語法,並舉了一些實際的例子進行了說明,終於告別了使用 numpy 手動搭建的日子。所以我們將繼續往下走,看看如何利用  Tensorflow 搭建神經網路模型。       儘管對於初學者而言使用 Te

心得深度學習入門——訓練並測試自己資料集

經過幾天的努力,成功訓練自己的資料集,並進行了單張圖片的測試。 訓練過程中val準確率約為0.91。看起來效果還比較理想,是否已經過擬合還沒有進行確定。 在訓練過程中,最討厭的就是處理檔案路徑和檔案存放位置。 一、ImageNet分類部分: caffe模型下有一個ex

從頭學習設計模式(一)——單例模式

一、引入   單例模式作為23種設計模式中的最基礎的一種模式,在平時開發中應用也非常普遍。到底哪些類應該設計成單例的呢,我們來舉個最通俗的例子。在一個父容器中單擊某個選單項開啟一個子視窗,如果不使用單例又沒有作選單項的可用控制的話,每次單擊選單項都會開啟一個新視窗。這不僅會浪費記憶體資源,在程式邏輯

專欄 - 深度學習實戰演練

深度學習實戰演練 深度學習(deep learning)是機器學習的分支,是一種試圖使用包含複雜結構或由多重非線性變換構成的多個處理層對資料進行高層抽象的演算法。 專題主編:https://www.jianshu.com/u

DeepLearning深度學習第一課:使用autograd來自動求導

使用autograd來自動求導 在機器學習中,我們通常使用梯度下降(gradient descent)來更新模型引數從而求解。損失函式關於模型引數的梯度指向一個可以降低損失函式值的方向,我們不斷地沿著梯度的方向更新模型從而最小化損失函式。雖然梯度計算比較直觀,

Java學習筆記034

1 package cn.temptation; 2 3 import java.io.IOException; 4 import java.net.DatagramPacket; 5 import java.net.DatagramSocket; 6 import java.ne

Java學習筆記033

1 package cn.temptation; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.FileInputStream;

Java學習筆記032

1 package cn.temptation; 2 3 public class Sample03 { 4 public static void main(String[] args) { 5 /* 6 * Thread類的常用成員方法:

資源深度學習 Top100:近 5 年被引用次數最高論文(下載)

【新智元導讀】這裡是近5年100篇被引用次數最多的深度學習論文,覆蓋了優化/訓練方法、無監督/生成模型、卷積網路模型和影象分割/目標檢測等十大子領域。重要的論文能夠超越其應用領域讓人獲益。新智元在每個領域都選擇了一篇論文重點介紹,這將是你縱覽深度學習研究絕好的開始。【進入

Java學習---Java的鎖Mysql的鎖機制

tps www. 鎖機制 www http ava mysql href 和數 【原文】https://www.toutiao.com/i6593861446428262916/ Java和數據庫的鎖機制 https://www.toutiao.com/i659386144

12Caffe學習系列:訓練測試自己的圖片

一、準備資料 有條件的同學,可以去imagenet的官網http://www.image-net.org/download-images,下載imagenet圖片來訓練。驗證碼始終出不來需要翻牆(是google網站的驗證碼)。但是我沒有下載,原因是資料太大了。。。 我去網上找了一些其它的圖片