在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > 怎樣看pytorch源碼最有效?

            怎樣看pytorch源碼最有效?

            發(fā)布人:計算機視覺工坊 時間:2021-06-09 來源:工程師 發(fā)布文章

            現在深度學習項目代碼量越來越大,并且單個文件的量也非常的大。筆者總結了一些專家的經驗并結合自己看的一些項目,打算總結一下如何探索和深入一個深度學習項目庫。

            1. 基礎知識

            首先,需要保證有一定的深度學習基礎知識,吳恩達的深度學習課還有斯坦福大學的CS231n都是不錯的入門教程,只需要有大學數學的基礎就可以看懂。

            然后,需要對Linux系統使用有一定的了解,一般選擇Ubuntu系統作為主力系統,了解一下基礎的系統命令就可以了,比如rm,ls,cd,cat,vim,sudo,find,df,top等,在B站上搜索一下Linux的視頻,很快就可以入門。之后遇到新的命令只需要查詢API即可。

            其次,還需要保證對python語言和深度學習框架的了解,python上手是很快的,可以看一下菜鳥教程或者莫煩python教程,上首頁很快。深度學習框架方面可以買一些書籍,邊看邊敲,找一個小項目敲一敲,了解一下大部分API就已經達到上手水平了。深度學習框架一般選tensorflow、pytorch,因為大部分項目大多是基于這兩個框架的。他們官方網站的教程也是非常不錯的參考,可以看看官方提供的教程,跑一下github上提供的demo。

            最后,營造科研的環(huán)境,可以關注一些領域相關的大牛、公眾號,也可以加入一些交流群,多和群友交流,盡可能提升領域的常識。不要亂問問題,一定要有自己的思考和想法,然后再到群里問問題和交流。

            2. 項目分析閱讀

            從Github上拿到一個項目,可以按照以下的步驟進行分析和閱讀。

            項目背景調研:

            項目是否是對應一篇論文?如果對應論文,可以先閱讀一下Paper,對背景和項目的細節(jié)有一個大概的了解。

            項目是否有說明文檔?一般比較大型的項目,比如pytorch,nni,mmdetection等較多人維護的項目是會在readthedoc上提供說明書,建議優(yōu)先閱讀說明。

            項目是否有README?README文件通常包含了項目創(chuàng)建者想要告訴你的信息,對于一些專業(yè)的項目庫而言,閱讀README文件絕對對你理解整個項目代碼有幫助。

            什么都沒有??極少數會遇到這種情況,但如果遇到的話,就進行下一個階段吧。

            通過文件命名分析:

            數據處理、數據加載部分,通常命名可能有xxx_dataloader.py等

            網絡模型構建部分,通常命名可能為 resnet20.py model.py等

            訓練部分腳本,通常命名可能為train.py等

            測試部分腳本,通常命名可能為test.py eval.py 等

            工具庫,通常命名為utils文件夾。

            根據文件夾、文件的命名,判斷其可能的功能。一般在深度學習項目中,通常有幾部分組成:

            舉個例子,以once for all項目為例:

            .

            ├── build.sh # 環(huán)境構建
            ├── eval_ofa_net.py
            ├── eval_specialized_net.py # 驗證專用網絡
            ├── figures
            │   ├── cnn_imagenet_new.png
            │   ├── diverse_hardware.png
            │   ├── imagenet_80_acc.png
            │   ├── ofa-tutorial.jpg
            │   ├── overview.png
            │   └── video_figure.png
            ├── LICENSE
            ├── ofa 
            │   ├── imagenet_classification 
            │   │   ├── data_providers # 數據加載
            │   │   ├── elastic_nn # 算法核心模塊
            │   │   ├── __init__.py
            │   │   ├── networks # 網絡構建
            │   │   └── run_manager # 訓練代碼核心邏輯
            │   ├── __init__.py
            │   ├── model_zoo.py # 模型庫
            │   ├── nas # nas相關工具
            │   │   ├── accuracy_predictor
            │   │   ├── efficiency_predictor
            │   │   ├── __init__.py
            │   │   └── search_algorithm
            │   ├── tutorial # 教程
            │   │   ├── accuracy_predictor.py
            │   │   ├── evolution_finder.py
            │   │   ├── flops_table.py
            │   │   ├── imagenet_eval_helper.py
            │   │   ├── __init__.py
            │   │   └── latency_table.py
            │   └── utils # 工具庫
            │       ├── common_tools.py
            │       ├── flops_counter.py
            │       ├── __init__.py
            │       ├── layers.py
            │       ├── my_dataloader
            │       ├── my_modules.py
            │       ├── pytorch_modules.py
            │       └── pytorch_utils.py
            ├── README.md # 項目介紹,初次接觸需要閱讀
            ├── requirements.txt # 環(huán)境文件
            ├── setup.py # pip構建環(huán)境所需文件
            ├── train_ofa_net.py # 訓練腳本
            └── tutorial # 教程
                ├── local_lut.npy
                ├── ofa.ipynb
                ├── ofa_resnet50_example.ipynb
                └── README.md

            找到程序運行入口:

            第一類bug,環(huán)境不兼容導致的bug,嚴格按照作者提供的運行環(huán)境,并對照環(huán)境的版本信息,對齊本地環(huán)境和作者要求的環(huán)境。

            第二類bug,深度學習框架帶來的bug,這部分bug可以在bing上進行搜索,查看解決方案。

            第三類bug,項目本身相關的bug,這類bug最好是在github的issue區(qū)域進行查找,如果無法解決可以在issue部分詳細描述自己的問題,等待項目庫作者的解答。

            通過上一步的分析,找到了項目的介紹的話,在自己機器上完成環(huán)境配置。

            一般可以找到項目運行的主入口,比如train.py,試著運行項目。

            遇見bug怎么辦?

            運行順利的話,代表可以進行debug操作,對文件某些細節(jié)不確定的話,可以通過debug的方式查看變量詳細內容。

            用IDE打開項目:

            閱讀入口文件的邏輯,查看調用到了哪些包。

            通過IDE的功能跳轉到對應類或者函數進行繼續(xù)閱讀,配合代碼注釋進行分析。

            分析過程可能會需要軟件工程的知識,比如畫一個類圖來表述項目的關系。

            一開始可以泛讀,大概了解整體流程,做一些代碼注釋。而后可以精讀,找到文章的核心,反復理解核心實現,抽絲剝繭,一定可以對這個項目有進一步的理解。

            筆者是vscode黨,推薦使用vscode+scp+mobaxterm+遠程服務器的方式進行運行。

            打開項目以后,從運行入口(通常是train.py)開始閱讀:

            實在讀不懂怎么辦?

            在Github的issue上進行提問。

            如果有項目作者的聯系方式,可以聯系作者,發(fā)郵件提問。

            看看有沒有其他人寫過相關的博客。

            3. 參考

            https://www.zhihu.com/question/26480537

            https://www.zhihu.com/question/29416073/answer/44301979

            https://github.com/phodal/articles/issues/14               

            *博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。

            linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
            分頻器相關文章:分頻器原理


            關鍵詞: AI

            相關推薦

            技術專區(qū)

            關閉