建議收藏!從零開始學(xué)PyTorch
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)

來源:GitHub
作者:zergtant
【導(dǎo)讀】今天我們強(qiáng)烈推薦一本中文PyTorch書籍 —— PyTorch 中文手冊(cè),并附上試讀。本書提供PyTorch快速入門指南并與最新版本保持一致,其中包含的 Pytorch 教程全部通過測試保證可以成功運(yùn)行。
PyTorch 是一個(gè)深度學(xué)習(xí)框架,旨在實(shí)現(xiàn)簡單靈活的實(shí)驗(yàn)。
自 2017 年初首次推出,PyTorch 很快成為 AI 研究人員的熱門選擇并受到推崇。PyTorch 有許多優(yōu)勢(shì),如采用 Python 語言、動(dòng)態(tài)圖機(jī)制、網(wǎng)絡(luò)構(gòu)建靈活以及擁有強(qiáng)大的社群等。由于其靈活、動(dòng)態(tài)的編程環(huán)境和用戶友好的界面,PyTorch 是快速實(shí)驗(yàn)的理想選擇。
PyTorch 現(xiàn)在是 GitHub 上增長速度第二快的開源項(xiàng)目,在過去的 12 個(gè)月里,貢獻(xiàn)者增加了 2.8 倍。而且,去年 12 月在 NeurIPS 大會(huì)上,PyTorch 1.0 穩(wěn)定版終于發(fā)布。PyTorch 1.0 增加了一系列強(qiáng)大的新功能,大有趕超深度學(xué)習(xí)框架老大哥 TensorFlow 之勢(shì)。
因此,學(xué)習(xí) PyTorch 大有裨益!
今天我們強(qiáng)烈推薦一本中文 PyTorch 書籍 ——PyTorch 中文手冊(cè) (pytorch handbook),并附上試讀。這是一本開源的書籍,目標(biāo)是幫助那些希望和使用 PyTorch 進(jìn)行深度學(xué)習(xí)開發(fā)和研究的朋友快速入門,其中包含的 Pytorch 教程全部通過測試保證可以成功運(yùn)行。
開源地址:
https://github.com/zergtant/pytorch-handbook
這是一本開源的書籍,目標(biāo)是幫助那些希望和使用 PyTorch 進(jìn)行深度學(xué)習(xí)開發(fā)和研究的朋友快速入門。
由于本人水平有限,在寫此教程的時(shí)候參考了一些網(wǎng)上的資料,在這里對(duì)他們表示敬意,我會(huì)在每個(gè)引用中附上原文地址,方便大家參考。
深度學(xué)習(xí)的技術(shù)在飛速的發(fā)展,同時(shí) PyTorch 也在不斷更新,且本人會(huì)逐步完善相關(guān)內(nèi)容。
由于 PyTorch 版本更迭,教程的版本會(huì)與 PyTorch 版本,保持一致。
12 月 8 日 PyTorch 已經(jīng)發(fā)布 1.0 的穩(wěn)定版。API 的改動(dòng)不是很大,本教程已經(jīng)通過測試,保證能夠在 1.0 中正常運(yùn)行。不過目前看影響不大,因?yàn)楫吘箖?nèi)容還不多。v0.4.1 已經(jīng)新建了分支作為存檔,并且該不會(huì)再進(jìn)行更新了。
第一章:pytorch 入門
1. Pytorch 簡介
2. Pytorch 環(huán)境搭建
3. PyTorch 深度學(xué)習(xí):60 分鐘快速入門 (官方)
張量
Autograd: 自動(dòng)求導(dǎo)
神經(jīng)網(wǎng)絡(luò)
訓(xùn)練一個(gè)分類器
選讀:數(shù)據(jù)并行處理 (多 GPU)
4. 相關(guān)資源介紹
第二章 基礎(chǔ)
第一節(jié) PyTorch 基礎(chǔ)
張量
自動(dòng)求導(dǎo)
神經(jīng)網(wǎng)絡(luò)包 nn 和優(yōu)化器 optm
數(shù)據(jù)的加載和預(yù)處理
第二節(jié) 深度學(xué)習(xí)基礎(chǔ)及數(shù)學(xué)原理
深度學(xué)習(xí)基礎(chǔ)及數(shù)學(xué)原理
第三節(jié) 神經(jīng)網(wǎng)絡(luò)簡介
神經(jīng)網(wǎng)絡(luò)簡介
第四節(jié) 卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)
第五節(jié) 循環(huán)神經(jīng)網(wǎng)絡(luò)
循環(huán)神經(jīng)網(wǎng)絡(luò)
第三章 實(shí)踐
第一節(jié) logistic 回歸二元分類
logistic 回歸二元分類
第二節(jié) CNN:MNIST 數(shù)據(jù)集手寫數(shù)字識(shí)別
CNN:MNIST 數(shù)據(jù)集手寫數(shù)字識(shí)別
第三節(jié) RNN 實(shí)例:通過 Sin 預(yù)測 Cos
RNN 實(shí)例:通過 Sin 預(yù)測 Cos
第四章 提高
第一節(jié) Fine-tuning
Fine-tuning
第二節(jié) 可視化
visdom
tensorboardx
第三節(jié) fastai
第四節(jié) 數(shù)據(jù)處理技巧
第五節(jié) 并行計(jì)算
第五章 應(yīng)用
第一節(jié) Kaggle 介紹
第二節(jié) 結(jié)構(gòu)化數(shù)據(jù)
第三節(jié) 計(jì)算機(jī)視覺
第四節(jié) 自然語言處理
第五節(jié) 協(xié)同過濾
第六章 資源
1.1 Pytorch 簡介
1.1.1 PyTorch 的由來
很多人都會(huì)拿 PyTorch 和 Google 的 Tensorflow 進(jìn)行比較,這個(gè)肯定是沒有問題的,因?yàn)樗麄兪亲罨鸬膬蓚€(gè)深度學(xué)習(xí)框架了。但是說到 PyTorch,其實(shí)應(yīng)該先說 Torch。
1.1.2 Torch 是什么?
Torch 英譯中:火炬
A Tensor library like Numpy, unlike Numpy it has strong GPU support. Lua is a wrapper for Torch (Yes! you need to have a good understanding of Lua), and for that you will need LuaRocks package manager.
Torch 是一個(gè)與 Numpy 類似的張量(Tensor)操作庫,與 Numpy 不同的是 Torch 對(duì) GPU 支持的很好,Lua 是 Torch 的上層包裝。
Torch is not going anywhere. PyTorch and Torch use the same C libraries that contain all the performance: TH, THC, THNN, THCUNN and they will continue to be shared.
We still and will have continued engineering on Torch itself, and we have no immediate plan to remove that.
PyTorch 和 Torch 使用包含所有相同性能的 C 庫:TH, THC, THNN, THCUNN,并且它們將繼續(xù)共享這些庫。
這樣的回答就很明確了,其實(shí) PyTorch 和 Torch 都使用的是相同的底層,只是使用了不同的上層包裝語言。
注:LUA 雖然快,但是太小眾了,所以才會(huì)有 PyTorch 的出現(xiàn)。
1.1.3 重新介紹 PyTorch
PyTorch is an open source machine learning library for Python, based on Torch, used for applications such as natural language processing. It is primarily developed by Facebook's artificial-intelligence research group, and Uber's "Pyro" software for probabilistic programming is built on it.
PyTorch 是一個(gè)基于 Torch 的 Python 開源機(jī)器學(xué)習(xí)庫,用于自然語言處理等應(yīng)用程序。它主要由 Facebook 的人工智能研究小組開發(fā)。Uber 的 "Pyro" 也是使用的這個(gè)庫。
PyTorch is a Python package that provides two high-level features:
Tensor computation (like NumPy) with strong GPU acceleration
Deep neural networks built on a tape-based autograd system
You can reuse your favorite Python packages such as NumPy, SciPy and Cython to extend PyTorch when needed.
PyTorch 是一個(gè) Python 包,提供兩個(gè)高級(jí)功能:
具有強(qiáng)大的 GPU 加速的張量計(jì)算(如 NumPy)
包含自動(dòng)求導(dǎo)系統(tǒng)的的深度神經(jīng)網(wǎng)絡(luò)
1.1.4 對(duì)比 PyTorch 和 Tensorflow
沒有好的框架,只有合適的框架, 這里有個(gè)簡單的對(duì)比,所以這里就不詳細(xì)再說了 https://zhuanlan.zhihu.com/p/28636490 并且技術(shù)是發(fā)展的,這里的對(duì)比也不是絕對(duì)的,比如 Tensorflow 在 1.5 版的時(shí)候就引入了 Eager Execution 機(jī)制實(shí)現(xiàn)了動(dòng)態(tài)圖,PyTorch 的可視化,windows 支持,沿維翻轉(zhuǎn)張量等問題都已經(jīng)不是問題了。
1.1.5 再次總結(jié)
PyTorch 算是相當(dāng)簡潔優(yōu)雅且高效快速的框架
設(shè)計(jì)追求最少的封裝,盡量避免重復(fù)造輪子
算是所有的框架中面向?qū)ο笤O(shè)計(jì)的最優(yōu)雅的一個(gè),設(shè)計(jì)最符合人們的思維,它讓用戶盡可能地專注于實(shí)現(xiàn)自己的想法
大佬支持,與 google 的 Tensorflow 類似,F(xiàn)AIR 的支持足以確保 PyTorch 獲得持續(xù)的開發(fā)更新
不錯(cuò)的的文檔(相比 FB 的其他項(xiàng)目,PyTorch 的文檔簡直算是完善了,參考 Thrift),PyTorch 作者親自維護(hù)的論壇 供用戶交流和求教問題
入門簡單
所以如果以上信息有吸引你的內(nèi)容,那么請(qǐng)一定要讀完這本書:)
1.2 Pytorch 環(huán)境搭建
PyTorch 的安裝十分簡單,根據(jù) PyTorch 官網(wǎng),對(duì)系統(tǒng)選擇和安裝方式等靈活選擇即可。這里以 anaconda 為例,簡單的說一下步驟和要點(diǎn)。國內(nèi)安裝 anaconda 建議使用清華或者中科大 [http://mirrors.ustc.edu.cn/help/anaconda.html] 鏡像,快的不是一點(diǎn)半點(diǎn)。
1.2.1 安裝 Pytorch
anaconda 安裝完成后可以開始創(chuàng)建環(huán)境,這里以 win10 系統(tǒng)為例。打開 Anaconda Prompt
#pytorch 為環(huán)境名,這里創(chuàng)建 python3.6 版。
conda create -n pytorch python=3.6
# 切換到 pytorch 環(huán)境
activate pytorch
#安裝 GPU 版本,根據(jù) cuda 版本選擇 cuda80,cuda92,如果 cuda 是 9.0 版,則不需要
#直接 conda install pytorch -c pytorch 即可
# win 下查看 cuda 版本命令 nvcc -V
conda install pytorch cuda92 -c pytorch
# cpu 版本使用
# conda install pytorch-cpu -c pytorch
# torchvision 是 torch 提供的計(jì)算機(jī)視覺工具包,后面介紹
pip install torchvision
需要說明的一點(diǎn)是如果使用清華源,可以直接添加 pytorch 源鏡像去掉,并且去掉 - c pytorch 這樣才能使用鏡像源。
驗(yàn)證輸入 python 進(jìn)入
import torch
torch.__version__
# 得到結(jié)果 '0.4.1'
1.2.2 配置 Jupyter Notebook
新建的環(huán)境是沒有安裝安裝 ipykernel 的所以無法注冊(cè)到 Jupyter Notebook 中,所以先要準(zhǔn)備下環(huán)境
#安裝 ipykernel
conda install ipykernel
#寫入環(huán)境
python -m ipykernel install --name pytorch --display-name "Pytorch for Deeplearning"
下一步就是定制 Jupyter Notebook
#切換回基礎(chǔ)環(huán)境
activate base
#創(chuàng)建 jupyter notebook 配置文件
jupyter notebook --generate-config
## 這里會(huì)顯示創(chuàng)建 jupyter_notebook_config.py 的具體位置
打開文件,修改
c.NotebookApp.notebook_dir = '' 默認(rèn)目錄位置
c.NotebookApp.iopub_data_rate_limit = 100000000 這個(gè)改大一些否則有可能報(bào)錯(cuò)
1.2.3 測試
至此 Pytorch 的開發(fā)環(huán)境安裝完成,可以在開始菜單中打開 Jupyter Notebook 在 New 菜單中創(chuàng)建文件時(shí)選擇 Pytorch for Deeplearning 創(chuàng)建 PyTorch 的相關(guān)開發(fā)環(huán)境了
1.2.4 問題解決
問題 1:啟動(dòng) python 提示編碼錯(cuò)誤
刪除 .python_history 來源
問題 2 默認(rèn)目錄設(shè)置不起效
打開快捷方式,看看快捷方式是否跟這個(gè)截圖一樣,如果是則刪除 % USERPROFILE% 改參數(shù)會(huì)覆蓋掉 notebook_dir 設(shè)置,導(dǎo)致配置不起效

如果你還發(fā)現(xiàn)其他問題,請(qǐng)直接留言
1.3 PyTorch 深度學(xué)習(xí):60 分鐘快速入門 (官方)
本章為官方網(wǎng)站的 [Deep Learning with PyTorch: A 60 Minute Blitz] (https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html) 的中文翻譯,目前在網(wǎng)上看到所有中文翻譯版本都已經(jīng)過時(shí)了,所以才又從新翻譯了一遍,確保與官方同步
目錄
張量
Autograd: 自動(dòng)求導(dǎo) 本章是沖突的重災(zāi)區(qū),建議閱讀
神經(jīng)網(wǎng)絡(luò)
訓(xùn)練一個(gè)分類器
選讀:數(shù)據(jù)并行處理 (多 GPU)
說明
本章中的所有圖片均來自于 PyTorch 官網(wǎng),版權(quán)歸 PyTorch 所有.
好消息!
小白學(xué)視覺知識(shí)星球
開始面向外開放啦??????
下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程 在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。 下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講 在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。 下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講 在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。 交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請(qǐng)按照格式備注,否則不予通過。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~

