工作中訓練了很多的深度學習模型,目前到了上公升到方**的角度來看了。日常工作中有的人可能已經在遵循方**做事,可能自己沒有注意,有的人可能沒有遵循方**在做事,雖然可能最後的結果差不多,但花費的時間和精力應該會差別很大,當然這是我自己的感受。我們不必完全按照方**來做,但基本流程跟方**應該一致。
下面的具體步驟以影象分類,識別影象中的貓為例。
1. 問題定義
問題定義,「what,how,why」中的what,首先要弄清楚自己要幹什麼,然後調研相關的技術,確定解決方案。例如這一步中我的工作是進行影象分類,問題定義是影象分類——識別貓,相關的技術包括各種分類模型,各種深度學習框架。我選擇的是bn-inception + caffe。
2. 確定評估標準
根據問題定義,確定了相關技術之後,不要著急動手去做,先確定評估標準,怎麼評價模型的好壞,例如分類貓可以通過準確率(precision)、召回率(recall)、f1、roc曲線、auc面積等。確定了評估標準之後,評估資料集也要準備好。
3. 確定baseline和target
baseline
有了評估標準後,需要確定乙個baseline,例如可以簡單快速的訓練乙個模型或已經有乙個pretrained model,在評估資料集上進行評估,得到乙個指標作為baseline,然後在baseline的基礎上進行提高,確定baseline類似於敏捷開發中的快速原型開發。
target
有了baseline之後,可以確定乙個目標,但這個目標不能是拍腦袋出來的,如果你的業務與別人的業務類似,例如色情識別,可以使用大廠(bat)的模型先在評估資料集上得出乙個結果,目標定為達到他們的水平或超過他們的水平。如果不跟別人的業務類似,那麼需要根據具體的業務需求確定乙個目標。目標還是要有的,起碼確定乙個方向。
4. 模型訓練
模型訓練這部分就沒太多說的了,深度學習工程師的基本功。
5. 模型評估
將訓練的模型在評估資料集上進行評估,分析評估結果,與上一次的模型結果以及target進行對比。將錯誤的資料取出來,分析存在的問題,討論調整的方向,記錄實驗結果。
6. 模型再訓練
重複步驟4、5,直至達到目標。如果模型還不錯,可以將模型放到beta環境測試,分析線上的結果,重複步驟4、5。
7. 服務部署
如果模型在beta環境也不錯,則可以進行線上測試,繼續重複步驟4、5,因為有的模型需要不斷的進行迭代更新。
參考資料
深度學習模型
深度學習常用方法 深度置信網路 dbn 概率生成模型,生成資料 卷積神經網路 cnn 判別模型,處理二維圖 卷積深度置信網路 cdbn 兩者的結合 迴圈神經網路 rnn 與時間序列有關的 對抗神經網路 gan 兩個網路的零和遊戲,乙個網路用來判別,乙個網路用來生成 自動編碼器 vae 生成模型 深度...
深度學習模型儲存 深度學習分布式模型
背景 隨著各大企業和研究機構在pytorch tensorflow keras mxnet等深度學習框架上面訓練模型越來越多,專案的資料和計算能力需求急劇增加。在大部分的情況下,模型是可以在單個或多個gpu平台的伺服器上執行的,但隨著資料集的增加和訓練時間的增長,有些訓練需要耗費數天甚至數週的時間,...
深度學習模型壓縮
1 引入1 1的卷積降維 inception v1 例如googlenet,假設輸入是28 28 192的feature map,1 1的channel是64,3 3的channel是128,5 5的channel是32 在左圖被3個 不同尺寸的卷積核卷積之後,參數量是1 1 192 64 3 3 ...