pyTorch 快速入門

2021-10-02 18:59:54 字數 4110 閱讀 2059

前言:

疫情太嚴重推遲開學了,可能三月份甚至四月份才開學,這個寒假真長,利用這段時間在家學點東西。如果足夠自律,就能夠充分利用時間;如果足夠自律,就能不斷地補充自己的不足;如果足夠自律,就能紮實深度學習理論基礎;如果足夠自律,就能進一步提公升**能力。

這一年,希望自己能夠自律些,一步步靠近合格的演算法工程師。

這幾天,我對《動手學深度學習 pytorch版》這本書很感興趣,但不熟悉pytorch,所以快速學習一下,作為pytorch的入門,附上pytorch的官方鏈結

pytorch 類似於numpy,而pytorch中的tensors和numpy的ndarray是相似的。

(1)宣告乙個未初始化的矩陣,但在使用前不包含確定的已知值。

x = torch.empty(5, 3)

print(x)

tensor([[2.3576e-36, 0.0000e+00, 0.0000e+00],

[0.0000e+00, 0.0000e+00, 0.0000e+00],

[0.0000e+00, 0.0000e+00, 2.8026e-45],

[0.0000e+00, 1.1210e-44, 0.0000e+00],

[1.4013e-45, 0.0000e+00, 0.0000e+00]])

(2)構造乙個隨機初始化的矩陣

x = torch.rand(5, 3)

print(x)

tensor([[0.2031, 0.8195, 0.2181],

[0.4732, 0.4602, 0.8097],

[0.6037, 0.4483, 0.2570],

[0.1677, 0.1944, 0.7259],

[0.3056, 0.8363, 0.1282]])

(3)構造乙個元素全部為零,型別為 long的矩陣

x = torch.zeros(5, 3, dtype=torch.long)

print(x)

tensor([[0, 0, 0],

[0, 0, 0],

[0, 0, 0],

[0, 0, 0],

[0, 0, 0]])

(4)直接以資料來構造張量

x = torch.tensor([5.5, 3])

print(x)

tensor([5.5000, 3.0000])
(5)基於現有張量來建立張量(除非使用者提供新的值,否則這些方法將會重用現有張量的屬性,例如 dtype)

x = x.new_ones(5, 3, dtype=torch.double)      # new_* methods take in sizes

print(x)

x = torch.randn_like(x, dtype=torch.float) # override dtype!與上面的xsize相同

print(x)

tensor([[1., 1., 1.],

[1., 1., 1.],

[1., 1., 1.],

[1., 1., 1.],

[1., 1., 1.]], dtype=torch.float64)

tensor([[-0.0929, 0.9791, 0.1481],

[-1.7100, 0.4316, -0.4209],

[-0.6479, 1.5173, -0.3646],

[-1.3288, 2.6447, -0.6539],

[-0.0300, 1.8167, 0.8633]])

print(x.size())

torch.size([5, 3])

(6)向量加減乘除運算

y = torch.rand(5, 3)

#法一print(x + y)

#法二print(torch.add(x, y))

#法三result = torch.empty(5, 3)

torch.add(x, y, out=result)

print(result)

#法四y.add_(x)

print(y)

運算後結果一樣

tensor([[ 0.4184,  0.6502,  0.3735],

[ 2.0532, 0.1959, 0.6630],

[ 1.6664, 0.4967, 0.7961],

[ 0.8452, 1.1509, 0.6831],

[ 1.0740, 0.8284, -0.2371]])

tensor([[ 0.4184, 0.6502, 0.3735],

[ 2.0532, 0.1959, 0.6630],

[ 1.6664, 0.4967, 0.7961],

[ 0.8452, 1.1509, 0.6831],

[ 1.0740, 0.8284, -0.2371]])

tensor([[ 0.4184, 0.6502, 0.3735],

[ 2.0532, 0.1959, 0.6630],

[ 1.6664, 0.4967, 0.7961],

[ 0.8452, 1.1509, 0.6831],

[ 1.0740, 0.8284, -0.2371]])

tensor([[ 0.4184, 0.6502, 0.3735],

[ 2.0532, 0.1959, 0.6630],

[ 1.6664, 0.4967, 0.7961],

[ 0.8452, 1.1509, 0.6831],

[ 1.0740, 0.8284, -0.2371]])

(7)可以類似於numpy的索引

print(x[:, 1])
tensor([ 0.5996, -0.0382,  0.4017,  0.5467,  0.2213])
(8)調整大小

調整張量大小,可使用torch.view:

x = torch.randn(4, 4)

y = x.view(16)

z = x.view(-1, 8) # -1的意思是從其他維度來推斷

print(x.size(), y.size(), z.size())

torch.size([4, 4]) torch.size([16]) torch.size([2, 8])
(9)如果只有乙個元素的張量,可使用.item()獲取該值

x = torch.randn(1)

print(x)

print(x.item())

tensor([-0.4073])

-0.40732377767562866

(10)torch張量與numpy陣列的轉換

# torch轉為numpy

a = torch.ones(5)

print(a)

b = a.numpy()

print(b)

tensor([1., 1., 1., 1., 1.])

[1. 1. 1. 1. 1.]

# numpy轉為torch

import numpy as np

a = np.ones(5)

b = torch.from_numpy(a)

np.add(a, 1, out=a)

print(a)

print(b)

[2. 2. 2. 2. 2.]

tensor([2., 2., 2., 2., 2.], dtype=torch.float64)

PyTorch快速入門

詳細的pytorch教程可以去pytorch官網的學習指南進一步學習,下面主要對pytorch做簡單的介紹,能夠快速入門。首先pytorch是基於python的科學計算類庫,主要有以下兩個方面的應用 作為numpy的替代者,充分利用gpu的計算能力。提供乙個靈活 快速的深度學習平台。tensor 與...

Pytorch快速入門

附錄qi 學習經歷 博主在半年內近乎從零開始了解深度學習,並直接跳過了機器學習的內容,沒有系統的上過與深度學習有關的課程,也是第一次上手pythorch,且以前也很少用python進行程式設計.幾乎都在用matlab與c 因此一開始接觸起來很吃力,甚至走了不少彎路,在這裡將自己通過學習與交流得到的一...

Pytorch 快速入門(一)

pytorch是facebook 的 ai 研究團隊發布了乙個基於 python的科學計算包,旨在服務兩類場合 乙個提供了高度靈活性和效率的深度學習實驗性平台 匯入pytorch的包import torchjupyter notebook 現在,pytorch看起來真的像乙個框架了,而純tensor...