更新時(shí)間:2018-09-18 來源:黑馬程序員技術(shù)社區(qū) 瀏覽量:
本文是關(guān)于Part1的內(nèi)容。
Part1:PyTorch簡(jiǎn)單知識(shí)
PyTorch是一個(gè)基于Python的科學(xué)計(jì)算框架,用于進(jìn)行深度學(xué)習(xí)相關(guān)研究。對(duì)于Python語言的入門,可以參考之前的兩篇介紹Python&Numpy的博客。分別是Python& Numpy 教程(上) 和Python & Numpy 教程(下)。這里我們就直接介紹PyTorch中的基本操作。
1 Tensors
Tensors與numpy中的ndarray類似,但是Tensors支持GPU運(yùn)算。首先來做一些簡(jiǎn)單的例子。
導(dǎo)入基本的package:
from __future__ import print_functionimport torch構(gòu)建一個(gè)5*3的未初始化的矩陣:
x = torch.Tensor(5, 3)print(x)構(gòu)建一個(gè)隨機(jī)初始化矩陣:
x = torch.rand(5, 3)print(x)獲取矩陣的size:
print(x.size())注意,torch.Size實(shí)際上是一個(gè)tuple,所以它支持相同的運(yùn)算。
2 運(yùn)算(Operations)
運(yùn)算可以使用多種語法表示,我們以加法為例子來說明。
加法:語法1
y = torch.rand(5, 3)print(x + y)加法:語法2
print(torch.add(x, y))加法:給定輸出的tensor
result = torch.Tensor(5, 3)torch.add(x, y, out=result)print(result)加法:原地進(jìn)行(in-place)的加法
# adds x to yy.add_(x)print(y)注意,任何原地改變tensor的運(yùn)算后邊會(huì)后綴一個(gè)“_”,例如:x.copy_(y),x.t_(),會(huì)改變x的值。
你可以使用標(biāo)準(zhǔn)的numpy方式的索引。
print(x[:, 1])3 NumpyBridge
將torch的Tensor轉(zhuǎn)換為numpy的array,反之亦然。
torch的Tensor和numpy的array分享底層的內(nèi)存地址,所以改變其中一個(gè)就會(huì)改變另一個(gè)。
將torch Tensor轉(zhuǎn)換為numpy array
a = torch.ones(5)print(a)觀察numpy array的值怎樣改變。
a.add_(1)print(a)print(b)將numpy array 轉(zhuǎn)換為torch Tensor
看一下改變numpy array的值是怎樣同時(shí)改變torch Tensor的。
import numpy as npa = np.ones(5)b = torch.from_numpy(a)np.add(a, 1, out=a)print(a)print(b)CPU上的所有Tensors(除了CharTensor)支持到Numpy的雙向轉(zhuǎn)換。
4 CUDA Tensors
通過使用 .cuda 函數(shù),Tensors可以被移動(dòng)到GPU。
# let us run this cell only if CUDA is availableif torch.cuda.is_available(): x = x.cuda() y = y.cuda() x + y本文版權(quán)歸黑馬程序員JavaEE學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!