Pytorch環(huán)境搭建與基本語(yǔ)法
來(lái)源 | OpenCV學(xué)堂
作者 | gloomyfish
基本思路選擇
以前我用過(guò)Caffe,用過(guò)tensorflow,最近一直在用pytorch感覺(jué)特別好用。所以打算寫(xiě)點(diǎn)我學(xué)習(xí)的過(guò)程跟經(jīng)驗(yàn),如果你是一個(gè)pytorch的高手自然可以忽略,如果你也打算學(xué)習(xí)pytorch框架,那就跟我一起學(xué)習(xí)吧,所謂獨(dú)學(xué)而無(wú)友,孤陋而寡聞!
pytorch安裝
01
演示系統(tǒng)環(huán)境
- Windows10
- Pytorch1.4
- CUDA10.0
- VS2015
- Python3.6.5
CPU版本
install pytorch torchvision cpuonly -c pytorch
GPU版本
install pytorch torchvision cudatoolkit=10.0 -c pytorch
測(cè)試安裝是否正常, CUDA支持正常
測(cè)試結(jié)果一切正常!
安裝的時(shí)候你還可以更直接點(diǎn)
pip install pytorch torchvision
就好啦!我知道很多人喜歡用各種python的工具跟IDE做開(kāi)發(fā),那些都是個(gè)人愛(ài)好,喜歡就好,但是千萬(wàn)別強(qiáng)迫別人跟你一樣!有IDE強(qiáng)迫癥!我從開(kāi)始學(xué)習(xí)python就一直用pycharm!千萬(wàn)別問(wèn)我好用不好用,方便不方便!覺(jué)得適合自己即可。
Pytorch基本語(yǔ)法演示
02
演示了pytorch中基本常量、變量、矩陣操作、CUDA調(diào)用,numpy與tensor轉(zhuǎn)化,維度轉(zhuǎn)化,自動(dòng)梯度等基本知識(shí)。代碼如下:
from __future__ import print_function import torch import numpy as np print(torch.__version__) # 定義矩陣 x = torch.empty(2, 2) print(x) # 定義隨機(jī)初始化矩陣 x = torch.randn(2, 2) print(x) # 定義初始化為零 x = torch.zeros(3, 3) print(x) # 定義數(shù)據(jù)為tensor x = torch.tensor([5.1, 2., 3., 1.]) print(x) # 操作 a = torch.tensor([1.,2.,3.,4.,5.,6.,7.,8.]) b = torch.tensor([11.,12.,13.,14.,15.,16.,17.,18.]) c = a.add(b) print(c) # 維度變換 2x4 a = a.view(-1, 4) b = b.view(-1, 4) c = torch.add(a, b) print(c, a.size(), b.size()) # torch to numpy and visa na = a.numpy() nb = b.numpy() print("\na =",na,"\nb =", nb) # 操作 d = np.array([21.,22.,23.,24.,25.,26.,27.,28.], dtype=np.float32) print(d.reshape(2, 4)) d = torch.from_numpy(d.reshape(2, 4)) sum = torch.sub(c, d) print(sum, "\n sum = ", sum.size()) # using CUDA if torch.cuda.is_available(): result = d.cuda() + c.cuda() print("\n result = ", result) # 自動(dòng)梯度 x = torch.randn(1, 5, requires_grad=True) y = torch.randn(5, 3, requires_grad=True) z = torch.randn(3, 1, requires_grad=True) print("\nx=",x, "\ny=",y, "\nz=",z) xy = torch.matmul(x, y) xyz = torch.matmul(xy, z) xyz.backward() print(x.grad, y.grad, z.grad)
運(yùn)行輸出結(jié)果:
1.4.0
tensor([[0., 0.],
[0., 0.]])
tensor([[-0.4624, -1.1495],
[ 1.9408, -0.1796]])
tensor([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
tensor([5.1000, 2.0000, 3.0000, 1.0000])
tensor([12., 14., 16., 18., 20., 22., 24., 26.])
tensor([[12., 14., 16., 18.],
[20., 22., 24., 26.]]) torch.Size([2, 4]) torch.Size([2, 4])a = [[1. 2. 3. 4.]
[5. 6. 7. 8.]]
b = [[11. 12. 13. 14.]
[15. 16. 17. 18.]]
[[21. 22. 23. 24.]
[25. 26. 27. 28.]]
tensor([[-9., -8., -7., -6.],
[-5., -4., -3., -2.]])
sum = torch.Size([2, 4])result = tensor([[33., 36., 39., 42.],
[45., 48., 51., 54.]], device='cuda:0')x= tensor([[ 0.3029, -0.4030, -0.9148, -0.9237, 0.7549]], requires_grad=True)
y= tensor([[-0.9032, -0.4092, -0.0682],
[ 0.3689, -0.9655, -0.1346],
[ 1.5101, 1.4418, 0.1058],
[ 1.0259, -1.6011, 0.4881],
[-0.3989, 0.9156, -1.6290]], requires_grad=True)
z= tensor([[ 1.4343],
[ 2.2974],
[-0.0864]], requires_grad=True)
tensor([[-2.2298, -1.6776, 5.4691, -2.2492, 1.6721]]) tensor([[ 0.4344, 0.6959, -0.0262],
[-0.5781, -0.9260, 0.0348],
[-1.3121, -2.1017, 0.0790],
[-1.3249, -2.1222, 0.0798],
[ 1.0827, 1.7342, -0.0652]]) tensor([[-3.0524],
[ 1.1164],
[-1.7437]])
總結(jié)
到此這篇關(guān)于Pytorch–環(huán)境搭建與基本語(yǔ)法的文章就介紹到這了,更多相關(guān)Pytorch–環(huán)境搭建與基本語(yǔ)法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
玩轉(zhuǎn)Python發(fā)短信的實(shí)現(xiàn)
用Python實(shí)現(xiàn)發(fā)短信功能,當(dāng)監(jiān)控到問(wèn)題出現(xiàn)時(shí),短信報(bào)警,使問(wèn)題能得到及時(shí)的處理。當(dāng)然,我相信,用Python發(fā)短信應(yīng)用場(chǎng)景不止此一處,下面我們開(kāi)始Python發(fā)短信的實(shí)現(xiàn),感興趣的朋友參考下吧2022-01-01Python?Pipeline處理數(shù)據(jù)工作原理探究
如果你是一個(gè)Python開(kāi)發(fā)者,你可能聽(tīng)過(guò)"pipeline"這個(gè)術(shù)語(yǔ),但?pipeline?到底是什么,它又有什么用呢?在這篇文章中,我們將探討?Python?中的?pipeline?概念,它們是如何工作的,以及它們?nèi)绾螏椭憔帉?xiě)更清晰、更高效的代碼2024-01-01Python version 2.7 required, which was not found in the regi
這篇文章主要介紹了安裝PIL庫(kù)時(shí)提示錯(cuò)誤Python version 2.7 required, which was not found in the registry問(wèn)題的解決方法,需要的朋友可以參考下2014-08-08Python對(duì)象的生命周期源碼學(xué)習(xí)
這篇文章主要為大家介紹了Python對(duì)象的生命周期源碼學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05python getpass實(shí)現(xiàn)密文實(shí)例詳解
這篇文章主要介紹了python getpass實(shí)現(xiàn)密文實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09使用python搭建服務(wù)器并實(shí)現(xiàn)Android端與之通信的方法
今天小編就為大家分享一篇使用python搭建服務(wù)器并實(shí)現(xiàn)Android端與之通信的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06python統(tǒng)計(jì)字母、空格、數(shù)字等字符個(gè)數(shù)的實(shí)例
今天小編就為大家分享一篇python統(tǒng)計(jì)字母、空格、數(shù)字等字符個(gè)數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06