日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

深度学习的模型是怎么训练/优化出来的

發布時間:2024/8/5 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 深度学习的模型是怎么训练/优化出来的 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以典型的分類問題為例,來梳理模型的訓練過程。訓練的過程就是問題發現的過程,一次訓練是為下一步迭代做好指引。

1.數據準備

準備:

數據標注前的標簽體系設定要合理
用于標注的數據集需要無偏、全面、盡可能均衡
標注過程要審核

整理數據集

將各個標簽的數據放于不同的文件夾中,并統計各個標簽的數目
如:第一列是路徑,最后一列是圖片數目。

PS:可能會存在某些標簽樣本很少/多,記下來模型效果不好就怨它。

樣本均衡,樣本不會絕對均衡,差不多就行了
如:控制最大類/最小類<(delta),(delta=5),最后一列為均衡的目標值。

切分樣本集
如:90%用于訓練,10%留著測試,比例自己定。訓練集合,對于弱勢類要重采樣,最后的圖片列表要shuffle;測試集合就不用重采樣了。
訓練中要保證樣本均衡,學習到弱勢類的特征,測試過程要反應真實的數據集分布。
第一列是圖片路徑,后面幾列是標簽(多任務)。

按需要的格式生成tfrecord
按照train.list和validation.list生成需要的格式。生成和解析tfrecord的代碼要根據具體情況編寫。

2.訓練

預處理,根據自己的喜好,編寫預處理策略。
preprocessing的方法,變換方案諸如:隨機裁剪、隨機變換框、添加光照飽和度、修改壓縮系數、各種縮放方案、多尺度等。進而,減均值除方差或歸一化到[-1,1],將float類型的Tensor送入網絡。
這一步的目的是:讓網絡接受的訓練樣本盡可能多樣,不要最后出現原圖沒問題,改改分辨率或寬高比就跪了的情況。
網絡設計,基礎網絡的選擇和Loss的設計。
基礎網絡的選擇和問題的復雜程度息息相關,用ResNet18可以解決的沒必要用101;還有一些SE、GN等模塊加上去有沒有提升也可以去嘗試。
Loss的設計,一般問題的抽象就是設計Loss數據公式的過程。比如多任務中的各個任務權重配比,centorLoss可以讓特征分布更緊湊,SmoothL1Loss更平滑避免梯度爆炸等。
優化算法
一般來說,只要時間足夠,Adam和SGD+Momentum可以達到的效果差異不大。用框架提供的理論上最好的優化策略就是了。
訓練過程
finetune網絡,我習慣分兩步:首先訓練fc層,迭代幾個epoch后保存模型;然后基于得到的模型,訓練整個網絡,一般迭代40-60個epoch可以得到穩定的結果。

total_loss會一直下降的,過程中可以評測下模型在測試集上的表現。真正的loss往往包括兩部分。后面total_loss的下降主要是正則項的功勞了。

3.評估模型

1.混淆矩陣必不可少
混淆矩陣可以發現哪些類是難區分的。基于混淆矩陣可以得到各類的準召,進而可以得到哪些類比較差。
如:列為真值,行為檢測的值。

gt/pl 靴子 單鞋 運動 休閑 棉鞋 雪地靴 帆布 拖鞋 涼鞋 雨鞋
靴子 4524 45 39 79 12 59 5 6 0 20
單鞋 51 4088 15 44 115 9 18 80 43 6
運動 38 6 817 247 0 2 18 8 1 0
休閑 53 47 171 806 17 8 118 15 1 2
棉鞋 12 110 5 15 424 55 2 32 1 1
雪地靴 53 6 5 10 73 628 0 13 2 1
帆布鞋 5 28 16 158 1 1 515 17 3 4
拖鞋 6 139 1 12 33 3 18 2316 60 6
涼鞋 7 69 3 6 0 0 2 55 633 1
雨鞋 26 6 1 3 0 1 2 5 1 499

進而可得:

label 召回 精度
靴子 0.9446648569638756 0.947434554973822
單鞋 0.9147460281942269 0.8996478873239436
運動 0.7185576077396658 0.7614165890027959
休閑 0.6510500807754442 0.5840579710144927
... ... ...

PS:運動-休閑容易混淆。

2.抽樣看測試數據
從測試數據中每類抽1000張,把它們的模型結果放在不同的文件夾下。對于分析問題還是很有效的,為什么它會分錯,要拿出來看看!
有些確實是人工標錯了。

3.CAM
通過CAM可以查看網絡究竟學到了什么(是不是學錯了)。對于細粒度問題就不用分析CAM了,一般7x7的特征圖本來就很小了,根本就看不出細節學到了什么,只能粗略看看部位定位是否準確。

也可以一定程度上幫助理解為什么網絡會搞錯,比如下面的單鞋被誤判為了拖鞋。

總結

以上是生活随笔為你收集整理的深度学习的模型是怎么训练/优化出来的的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。