前言:
疫情太嚴重推遲開學了,可能三月份甚至四月份才開學,這個寒假真長,利用這段時間在家學點東西。如果足夠自律,就能夠充分利用時間;如果足夠自律,就能不斷地補充自己的不足;如果足夠自律,就能紮實深度學習理論基礎;如果足夠自律,就能進一步提公升**能力。
這一年,希望自己能夠自律些,一步步靠近合格的演算法工程師。
這幾天,我對《動手學深度學習 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...