怎樣看 pytorch 源碼最有效?

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

  1. 基礎知識

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

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

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

最後,營造科研的環境,可以關注一些領域相關的大牛、公衆號,也可以加入一些交流羣,多和羣友交流,儘可能提升領域的常識。不要亂問問題,一定要有自己的思考和想法,然後再到羣裏問問題和交流。

  1. 項目分析閱讀

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

.
├── build.sh # 環境構建
├── 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 # 環境文件
├── setup.py # pip構建環境所需文件
├── train_ofa_net.py # 訓練腳本
└── tutorial # 教程
    ├── local_lut.npy
    ├── ofa.ipynb
    ├── ofa_resnet50_example.ipynb
    └── README.md
  1. 參考

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

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

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


本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/C-5CEji0JQW6UNwxB07WMQ