国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

模型調優和復現算法遇到的一些坑

新機器視覺 ? 來源:CSDN ? 作者:新機器視覺 ? 2022-05-18 15:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作為一名算法工程師,主要是想把自己模型調優和復現算法遇到的一些坑總結一下(里面的一行字可能是我當時花費了一周甚至更長時間得到的總結),希望能對讀者有所幫助。

一、熟悉數據

模型是數據的濃縮版----Andrew NG的二八定律,即80%的數據+20%的=更好的AI

對于新上手的一任務來說,需要熟悉你的數據。拿檢測任務來說,可以寫個可視化代碼查看標注是否合理,查看一下待檢測物體的大小分布情況(例如anchor的預設),查看一下圖片大小,查看類別分布情況(例如是否有極端的分布)等等。

二、算法選型

在接到一個新領域的新任務時,需要調研相關領域算法,對該領域的發展有個大概的了解,掌握一些關鍵算法(比如歷年的SOTA)的思路。雖然調研需要花費一些時間,但是這樣在算法選型上可以少做一些實驗,性價比是很高的。站在他們的肩膀上就好了。

不太可取的思路:

在指標上太鉆牛角尖。有些算法工程師遇到指標在自己數據集效果不太好的情況時,立馬換別的算法,或者立馬換個backbone,或者立馬換個loss去做實驗。(需要認真分析為什么效果不好,是自己訓練有問題,還是當前數據不太適合該算法,是評測指標不合理,還是評測指標實現有問題。)

不進行相關調研,直接上SOTA算法。這樣做會有一些不太理想的問題,比如SOTA可能沒有針對自己場景的數據做優化,比如當前任務是小目標居多(通過分析數據得到),雖然SOTA的總的mAP很高,但是small mAP比之前算法還低,那就要慎用 。比如SOTA用的是很重的網絡,但是任務是速度快,或者速度與效果兼顧,那也應該慎用。

三、基于已有實現來優化算法

對于某個任務在選擇好合適的算法以后,如果有相應的效果比較好的開源實現,最好用開源項目進行算法的復現。

這樣做的目的:

更方便深入的理解算法的具體細節,比如可能代碼在文章沒有提到的某些層上偷摸的加了一個shift操作,比如文章提到的一些trick代碼根本沒有實現,比如代碼用了額外的數據訓練但文章沒有提到,比如文章描述的數據增強方式與代碼的實現不一樣等。(這些可能發生在開源復現者沒有“一比一”復現論文的情況,也可能發生在論文作者自己沒有實現的情況)

能快速掌握算法的基礎性能,比如復現算法大概的運行速度(特別是文章沒給出的時候)和達到的效果

不用自己做一些無用功。要知道重寫和調試一份新的模型不僅費時費力,可能還因為文章沒有寫清楚一些細節,導致你幾乎無法復現到相應的結果。

利用開源項目已復現的算法(這里復現不是完全能與代碼作者或者文章作者結果一致,可能是數據增強,隨機種子導致結果有偏差,但已獲取到八九不離十的結果)來改進模型可以有下面幾點思路:

代碼是否實現了文章一些漲點的trick,如果沒有可以嘗試

文章一般會分析實驗結果,后面會有作者自己的一些觀點,他們可能會說明為什么有些情況文章的算法效果較差

有些文章會寫他們將來可能的工作,這也是一個改進思路

需要可視化查看實驗結果(特別是跑自己的數據集),結果可能與作者在公開數據集展示出的問題不一樣,分析效果差的原因

四、從0復現算法

復現算法是一個比較大的工程,這里的大工程不只是指代碼多或者工作量大,而是沒有一個基礎版,導致引入的不可控因素太多調試困難,比如數據接口是否有問題,模型是否搭建正確,訓練方式是否存在問題。

在復現算法或者優化算法是比較頭疼的是一切訓練正常,loss曲線比你想象的還好看,訓練了一年后(just kidding, maybe longer),測試一下發現效果奇差無比,都不好意思說是自己寫的代碼。一年就過去了。

這里有下面一些建議:

盡量測試每一個細節,從數據接口,模型,到loss輸出,到最終的評測代碼。保證每個部分都可控。

測試數據接口,從單進程,batch為1開始,方便打印數值進行對比。

不要隨意的去隨機,盡量保證問題可以復現比如先不要加入隨機數據增強,模型的隨機種子固定。

用少量的數據,這樣可以快速的做實驗,也可以讓模型快速過擬合。模型能過擬合可以大概確定模型是可以學到點什么的。

盡量按照原文來復現,在復現前,先不要過多的添加自己獨特的想法。比如訓練參數,模型backbone,數據增強方式等等先按照文章來。不清楚的點可以嘗試email作者或者尋找相關圈子討論。

日志打印全,比如解loss為nan的情況,需要知道是forward的導致還是bp導致。

五、一些或許有用的訓練建議

保證數據是可靠的

有預訓練模型最好用上

通常學習率參數小于1e-5基本沒啥用了,比如cosine或者step操作,最后的學習率到1e-5就好了。當然特殊任務不一樣

bn在訓練時記得打開更新(特別是tf的小伙伴,容易漏),不然可能出現的問題是訓練時loss下降很快,測試感覺模型就沒收斂

sgd是很棒的,但是實驗用adam或許收斂速度更好

如果想要很好的壓榨出一個算法的性能,請先保證當前模型能到達相應的性能再去壓榨。而不是盲目的換模塊,瘋狂調參,那樣可能只是浪費時間

不要太相信自己的調參技術,在沒有一個較好的baseline情況下,調參不會有質的飛躍(除非是之前參數造成了某種bug)

數據小時,使用了預訓練模型記得固定前幾層的模型參數,還可以用小點的學習率

loss balance有時候很有用

重復訓練可能可以提升點數,將一個模型訓練好后,用訓練好的模型做預訓練模型載入,繼續用同一套參數訓練。有點像CyclicLR(https://pytorch.org/docs/stable/generated/torch.optim.lr_scheduler.CyclicLR.html#torch.optim.lr_scheduler.CyclicLR)

DL沒有像機器學習有那么多公式支撐,很多都是make sense就做個實驗來驗證,所以盡量多閱讀論文,看看別人的實驗,這樣就可以減少不必要的實驗

這篇文章是為了分享自己的一些心得,希望讀者能用得上,如果有嚴重錯誤還請告知,不想誤導他人

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4784

    瀏覽量

    98059
  • 模型
    +關注

    關注

    1

    文章

    3752

    瀏覽量

    52111
  • 機器學習
    +關注

    關注

    66

    文章

    8553

    瀏覽量

    136948

原文標題:一個算法工程師復現算法的踩坑總結

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    算法工程師需要具備哪些技能?

    、鏈式法則等。應用場景:梯度下降優化算法、反向傳播計算等。 優化理論核心內容:凸優化、非凸優化、拉格朗日乘數法等。應用場景:模型參數調、資源分配問題等。 編程語言Python:主流選
    發表于 02-27 10:53

    解鎖Zephyr實時操作系統深度調能力

    可以說,代碼編寫只是項目開發的起點,而隨之而來的資源分析與性能調才是確保系統穩定可靠的關鍵環節。
    的頭像 發表于 01-30 09:16 ?5656次閱讀

    性能測試調實戰與探索(存儲模型優化+調用鏈路分析)

    分析、流量分析、壓測實施和剖解調優等主要環節中,引發對于系統能力底盤夯實和測試策略改進的諸多思考。 在性能測試階段,剖析系統能力實現及調方案,探索更優解及性能測試策略的提升空間。 ? ? 二、熱點數據存儲模型壓測
    的頭像 發表于 01-12 14:46 ?1464次閱讀
    性能測試<b class='flag-5'>調</b><b class='flag-5'>優</b>實戰與探索(存儲<b class='flag-5'>模型</b>優化+調用鏈路分析)

    在Ubuntu20.04系統中訓練神經網絡模型一些經驗

    本帖欲分享在Ubuntu20.04系統中訓練神經網絡模型一些經驗。我們采用jupyter notebook作為開發IDE,以TensorFlow2為訓練框架,目標是訓練個手寫數字識別的神經網絡
    發表于 10-22 07:03

    HarmonyOSAI編程智慧調

    任務或打開本地已有的調數據文件。 等待AI分析完成各階段耗時情況。可以左鍵選中階段名稱,點擊Analyze,進步分析該階段的具體耗時信息,或點擊View Lane,在右側查看具
    發表于 09-01 15:15

    UWB自動跟隨技術原理、算法融合優化和踩實錄

    UWB為什么是最靠譜的自動跟隨技術?原理是什么?需要做什么算法融合、優化?我們在開發過程中踩過的
    的頭像 發表于 08-14 17:45 ?1542次閱讀
    UWB自動跟隨技術原理、<b class='flag-5'>算法</b>融合優化和踩<b class='flag-5'>坑</b>實錄

    HarmonyOS AI輔助編程工具(CodeGenie)智慧調

    或打開本地已有的調數據文件。 等待AI分析完成各階段耗時情況。可以左鍵選中階段名稱,點擊Analyze,進步分析該階段的具體耗時信息,或點擊View Lane,在右側查看具體的泳道信息。 點擊分析
    發表于 08-14 11:12

    Linux網絡性能調方案

    在當今高并發、大流量的互聯網環境下,網絡性能往往成為系統的瓶頸。作為名資深運維工程師,我在生產環境中遇到過無數次因為TCP/IP參數配置不當導致的性能問題。今天分享套完整的Linux網絡性能
    的頭像 發表于 08-06 18:01 ?1332次閱讀

    Linux內核參數調方案

    在高并發微服務環境中,網絡性能往往成為K8s集群的瓶頸。本文將深入探討如何通過精細化的Linux內核參數調,讓你的K8s節點網絡性能提升30%以上。
    的頭像 發表于 08-06 17:50 ?956次閱讀

    Linux系統性能調方案

    關鍵要點預覽:本文將深入解析Linux系統性能瓶頸的根本原因,提供可直接落地的調方案,讓你的系統性能提升30-50%!
    的頭像 發表于 08-06 17:49 ?878次閱讀

    MySQL配置調技巧

    上個月,我們公司的核心業務系統突然出現大面積超時,用戶投訴電話不斷。經過緊急排查,發現是MySQL服務器CPU飆升到99%,大量慢查詢堆積。通過系列配置調和SQL優化,最終在30分鐘內恢復了服務。
    的頭像 發表于 07-31 10:27 ?612次閱讀

    Nginx在企業環境中的調策略

    Nginx作為現代互聯網架構中最重要的Web服務器和反向代理服務器,其性能調對企業級應用的穩定性和效率至關重要。本指南將從運維實踐角度出發,詳細介紹Nginx在企業環境中的各種調
    的頭像 發表于 07-14 11:13 ?634次閱讀

    在FX2LP USB上配置GPIF中斷時遇到一些問題,求解決

    你好,我在 FX2LP USB 上配置 GPIF 中斷時遇到一些問題。 我啟用了 INT4 中斷并從 GPIF 中選擇了源 INT4,然后啟用了 GPIF 完成中斷,但我看不到中斷 4 工作。 我該如何做呢?
    發表于 05-06 08:00

    Modbus TCP通信的那些!你遇到過幾個?

    總結,手把手教你逆襲甩鍋。Modbus TCP常見問題主要包括連接建立、錯誤代碼識別、數據處理和地址沖突等。 以下是一些常見問題的解答: 問題: 如何判斷Modbus TCP連接是否建立? 答:進行
    的頭像 發表于 04-16 17:17 ?1471次閱讀
    Modbus TCP通信的那些<b class='flag-5'>坑</b>!你<b class='flag-5'>遇到</b>過幾個?

    IGBT模塊的反向恢復現

    IGBT模塊的反向恢復現象是指在IGBT關斷時,其內部集成的續流二極管(FWD)從正向導通狀態轉變為反向截止狀態過程中出現的一些特定物理現象和電氣特性變化。
    的頭像 發表于 03-13 14:39 ?4249次閱讀
    IGBT模塊的反向恢<b class='flag-5'>復現</b>象