Task01-PyTorch安裝與基礎知識

學習資源/來源:DataWhale組織-PyTorch教程浑槽、視頻教程

第1章:pytorch安裝

環(huán)境準備-創(chuàng)建虛擬環(huán)境

已安裝的環(huán)境:Anaconda3 2019.03 windows(python37)

# 查看所有環(huán)境
conda env list   
# conda 創(chuàng)建虛擬環(huán)境
conda create -n torch python=3.7 
# 刪除虛擬環(huán)境
conda remove -n env_name --all
# 激活環(huán)境
activate torch / sourch activate Env(Linux)
# 退出當前
deactivate

換源

一些國內(nèi)鏡像源

阿里云 http://mirrors.aliyun.com/pypi/simple/
??中國科技大學 https://pypi.mirrors.ustc.edu.cn/simple/
??豆瓣(douban) http://pypi.douban.com/simple/
??清華大學 https://pypi.tuna.tsinghua.edu.cn/simple/
??中國科學技術(shù)大學 http://pypi.mirrors.ustc.edu.cn/simple/

臨時換源:

pip install package_name==version -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

pip換源

Linux系統(tǒng)

  1. 用戶目錄下新建文件夾.pip,并新建文件pip.conf

    cd ~
    mkdir .pip/
    vi pip.conf
    
  2. 編輯并保存pip.conf文件內(nèi)容

    [global]
    index-url = http://pypi.douban.com/simple
    [install]
    use-mirrors =true
    mirrors =http://pypi.douban.com/simple/
    trusted-host =pypi.douban.com
    

Windows系統(tǒng)

  1. 文件管理器路徑地址欄輸入:%APPDATA%回車,快速進入 C:\Users\電腦用戶\AppData\Roaming 文件夾中

  2. 新建pip文件夾棺耍,并在文件夾中新建文件pip.ini配置文件糜颠,記事本打開填寫以下內(nèi)容(豆瓣源):

    [global]
    index-url = http://pypi.douban.com/simple
    [install]
    use-mirrors =true
    mirrors =http://pypi.douban.com/simple/
    trusted-host =pypi.douban.com
    

conda換源

通過修改用戶目錄下的.condarc文件更改源鏡像,填寫以下內(nèi)容(清華源):

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

Windows系統(tǒng)

  1. 執(zhí)行 conda config --set show_channel_urls yes生成.condarc文件
  2. 修改 C:\Users\User_name.condarc 文件讼昆,內(nèi)容如上

Linux系統(tǒng)

cd ~
vi .condarc  # 編輯以上內(nèi)容托享,Esc退出編輯模式并:wq保存

可通過 conda config --show default_channels 檢查是否換源成功。

查看顯卡

windows:

cmd/terminal輸入nvidia-smi(Linux與windows一樣)

使用NVIDIA控制面板和使用任務管理器查看自己是否有NVIDIA的獨立顯卡及其型號

img2.png

查看可以兼容的CUDA版本浸赫,等會安裝PyTorch時是可以向下兼容的

img3.png

安裝PyTorch

  1. 登錄pytorch官網(wǎng)

  2. CUDA與CuDNN安裝(gpu版本安裝闰围,cpu版本可忽略)

    • CUDA下載- Base Installer 即可:https://developer.nvidia.com/cuda-10.2-download-archive

      • 安裝完畢后安裝目錄下~.bin/(C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2) 命令查看是否安裝成功:nvcc -V
    • 下載對應cuda版本的cudnn(zip): cuDNN Archive | NVIDIA Developer

      • 解壓cudnn文件,將三個文件夾復制到cuda安裝目錄下(與bin同級)

      • 在同級目錄下既峡,./exras/demo_suite 測試是否安裝成功

        • 打開cmd執(zhí)行:bandwidthTest.exe辫诅,返回pass則成功
        • 打開cmd執(zhí)行:deviceQuery.exe,返回pass則成功
  3. 根據(jù)環(huán)境選擇版本和系統(tǒng)涧狮,也可選擇 install previous versions of PyTorch.

    # CUDA 10.2
    conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=10.2 -c pytorch
    

    遇到報錯:

img4-error.png

安裝提示刪除所在路徑的文件炕矮,重啟電腦即可。

注:上面conda安裝方式windows系統(tǒng)無法成功安裝gpu版本(torch.cuda.is_available()即使cuda安裝后還是返回False)

pip安裝:官網(wǎng)上選擇pip安裝方式者冤,通過鏈接下載對應版本文件
此處可下載: https://download.pytorch.org/whl/

  • torch&torchvision:選擇對應版本cu102, cp37

  • pip 安裝torch&torchvision:打開cmd執(zhí)行 pip install xxx.whl

  1. 檢驗是否安裝成功

    import torch
    torch.cuda.is_available()
    torch.__version__
    torch.version.cuda
    

PyTorch學習資源

  1. Awesome-pytorch-list:目前已獲12K Star肤视,包含了NLP,CV,常見庫,論文實現(xiàn)以及Pytorch的其他項目涉枫。
  2. PyTorch官方文檔:官方發(fā)布的文檔邢滑,十分豐富。
  3. Pytorch-handbook:GitHub上已經(jīng)收獲14.8K愿汰,pytorch手中書困后。
  4. PyTorch官方社區(qū)
  5. PyTorch官方tutorials:官方編寫的tutorials,可以結(jié)合colab邊動手邊學習
  6. 動手學深度學習:動手學深度學習是由李沐老師主講的一門深度學習入門課衬廷,在B站摇予,Youtube均有回放。
  7. Awesome-PyTorch-Chinese:常見的中文優(yōu)質(zhì)PyTorch資源

第2章:pytorch基礎知識

2.1張量

簡介

張量是基于向量和矩陣的推廣吗跋,可將標量視為零階張量侧戴,矢量/向量為一階張量,矩陣為二階張量跌宛。

創(chuàng)建tensor

import torch

# 隨機初始化矩陣
torch.rand(4,3) 

# 創(chuàng)建全0矩陣
torch.zeros(4, 3, dtype=torch.long)

# 通過torch.zero_()和torch.zeros_like()

# 創(chuàng)建張量
x = torch.tensor([5.5, 3])

# 基于現(xiàn)有tensor,創(chuàng)建tensor
a = x.new_ones(4, 3, dtype=torch.double)  # torch.ones(4,3,dtype=torch.double)
b = torch.randn_like(a, dtype=torch.float)
print(a.size(), b.shape())

張量的操作

加法操作:

import torch
# 方式1
x = torch.rand(4, 3)
y = torch.rand(4, 3)
print(x+y)

# 方式2
print(torch.add(x, y))

# 方式3 in-place,原值修改
y.add_(x)
print(y)

索引操作(類似numpy)

維度變換(常見torch.view()酗宋、torch.reshape())

x = torch.randn(4, 4)
y = x.view(16)
z = x.view(-1, 8)
print(x.size(), y.size(), z.size())

注: torch.view() 返回的新tensor與源tensor共享內(nèi)存(其實是同一個tensor)

廣播機制

x = torch.arange(1, 3).view(1, 2)
y = torch.arange(1, 4).view(3, 1)
print(x+y)

2.2自動求導

AutoGrad

通過設置張量的.requires_grad屬性,完成計算后通過調(diào)用.backward()自動計算所有的梯度疆拘。每個張量都有.grad_fn屬性

from __future__ import print_function
import torch
x = torch.randn(3,3,requires_grad=True)
print(x.grad_fn)
a = torch.randn(2, 2) # 缺失情況下默認 requires_grad = False
a = ((a * 3) / (a - 1))
print(a.requires_grad)
a.requires_grad_(True)
print(a.requires_grad)
b = (a * a).sum()
print(b.grad_fn)

梯度

import torch
x = torch.ones(2, 2, requires_grad=True)
print(x)
y = x**2
z = y * y * 3
out = z.mean()
print(z, out)

out.backward()
print(x.grad)

# 注意:grad在反向傳播過程中是累加的(accumulated)蜕猫,所以一般在反向傳播之前需把梯度清零。
# 再來反向傳播?一次哎迄,注意grad是累加的
out2 = x.sum()
out2.backward()
print(x.grad)

out3 = x.sum()
x.grad.data.zero_()
out3.backward()
print(x.grad)
# 雅可比向量積
x = torch.randn(3, requires_grad=True)
print(x)

y = x * 2
i = 0
while y.data.norm() < 1000:
    y = y * 2
    i = i + 1
print(y)
print(i)

# torch.autograd 不能直接計算完整的雅可比矩陣
v = torch.tensor([0.1, 1.0, 0.0001], dtype=torch.float)
y.backward(v)

print(x.grad)

# 通過將代碼塊包裝在 with torch.no_grad(): 中回右,來阻止 autograd 跟蹤設置
print(x.requires_grad)
print((x ** 2).requires_grad)

with torch.no_grad():
    print((x ** 2).requires_grad)

修改 tensor 的數(shù)值稀颁,又不被 autograd 記錄(即不會影響反向傳播), 以對 tensor.data 進行操作

x = torch.ones(1,requires_grad=True)

print(x.data) # 還是一個tensor
print(x.data.requires_grad) # 但是已經(jīng)是獨立于計算圖之外

y = 2 * x
x.data *= 100 # 只改變了值楣黍,不會記錄在計算圖匾灶,所以不會影響梯度傳播

y.backward()
print(x) # 更改data的值也會影響tensor的值 
print(x.grad)

2.3并行計算

當服務器上有多個GPU,指定使用GPU租漂,不設置時tensor.cuda()會默認將tensor保存到第一塊GPU上阶女,等價于tensor.cuda(0)

可通過以下兩種方式設置:

# 1.設置在文件最開始部分
import os
os.environ["CUDA_VISIBLE_DEVICE"] = "2" # 設置默認的顯卡

# 2.調(diào)用py文件時指定
CUDA_VISBLE_DEVICE=0,1 python train.py # 使用0,1兩塊GPU
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哩治,一起剝皮案震驚了整個濱河市秃踩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌业筏,老刑警劉巖憔杨,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蒜胖,居然都是意外死亡消别,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門台谢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寻狂,“玉大人,你說我怎么就攤上這事朋沮∩呷” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵樊拓,是天一觀的道長纠亚。 經(jīng)常有香客問我,道長筋夏,這世上最難降的妖魔是什么蒂胞? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮叁丧,結(jié)果婚禮上啤誊,老公的妹妹穿的比我還像新娘岳瞭。我一直安慰自己拥娄,他們只是感情好,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布瞳筏。 她就那樣靜靜地躺著稚瘾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪姚炕。 梳的紋絲不亂的頭發(fā)上摊欠,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天丢烘,我揣著相機與錄音,去河邊找鬼些椒。 笑死播瞳,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的免糕。 我是一名探鬼主播赢乓,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼石窑!你這毒婦竟也來了牌芋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤松逊,失蹤者是張志新(化名)和其女友劉穎躺屁,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體经宏,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡犀暑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了烁兰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片母怜。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缚柏,靈堂內(nèi)的尸體忽然破棺而出苹熏,到底是詐尸還是另有隱情,我是刑警寧澤币喧,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布轨域,位于F島的核電站,受9級特大地震影響杀餐,放射性物質(zhì)發(fā)生泄漏干发。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一史翘、第九天 我趴在偏房一處隱蔽的房頂上張望枉长。 院中可真熱鬧,春花似錦琼讽、人聲如沸必峰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吼蚁。三九已至,卻和暖如春问欠,著一層夾襖步出監(jiān)牢的瞬間肝匆,已是汗流浹背粒蜈。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留旗国,地道東北人枯怖。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像能曾,于是被迫代替她去往敵國和親嫁怀。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容