Pytorch Tutorial (1) -- DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ - Markdown版本
阿新 • • 發佈:2019-01-07
Deep Learning with PyTorch: A 60 Minute Blitz
- 0.基礎準備
- 1.What is PyTorch?
- 2.AUTOGRAD: AUTOMATIC DIFFERENTIATION
- 3.NEURAL NETWORKS
- 4.TRAINING A CLASSIFIER
- 5.OPTIONAL: DATA PARALLELISM
- 6.答疑
0.基礎準備
1.安裝torchvision
conda install torchvision -c pytorch
2.更新了一堆,以下是torchvision文件
https://pytorch.org/docs/master/torchvision/
1.What is PyTorch?
0.匯入模組
https://blog.csdn.net/xiaotao_1/article/details/79460365(py27與py3的print不相容怎麼辦?)
from __future__ import print_function
import torch
1.Tensor
torch.tensor類似numpy.ndarrays,但是寫出來的語法可以用GPU加速
1.建立一個5*3沒有初始化的矩陣
x = torch.empty(5, 3)
print(x)
2.建立一個5*3隨機初始化的矩陣
x = torch.rand(5, 3)
print(x)
3.建立一個型別為long的0矩陣
x = torch.zeros(5, 3, dtype=torch.long)
print(x)
4.根據給定資料值建立張量
x = torch.tensor([5.5, 3])
print(x)
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!
print(x) # result has the same size
6.獲得矩陣的大小
torch.size是tuple,可以進行tuple一切操作
print(x.size())
2.Operations
1.加法操作符
1.方法一
y = torch.rand(5, 3)
print(x + y)
2.方法二
print(torch.add(x, y))
使用引數out定義輸出張亮變數,方便繼續操作
result = torch.empty(5, 3)
torch.add(x, y, out=result)
print(result)
3.方法三
注意:任何一個原地改變張量的操作符
# adds x to y
y.add_(x)
print(y)
2.輔助操作
1.輸出某一列向量的值
print(x)
print(x[:, 1])
2.將張量重新塑形(使用torch.view)
x = torch.randn(4, 4)
#變成16行
y = x.view(16)
#變成n行8列
z = x.view(-1, 8) # the size -1 is inferred from other dimensions
print(x.size(), y.size(), z.size())
print(x, y, z)
3.提取單元素張量數值
如果有一個張量只有一個元素,使用.item()可以將其數值作為python數字
x = torch.randn(1)
print(x)
print(x.item())
3.關於操作符部分,檢視文件學習更多
https://pytorch.org/docs/stable/torch.html
3.NUMPY BRIDGE
torch.tensor<->numpy.array
1.Torch Tensor->NumPy Array
a = torch.ones(5)
print("a =", a)
b = a.numpy()
print("b =", b)
變更tensor的數值(torch tensor和numpy array共享表層儲存空間,改一個數值,剩下的都會被改)
a.add_(1)
print("a =", a)
print("b =", b)
2.NumPy Array->Torch Tensor
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a)
print(a)
print(b)
4.CUDA TENSORS
1.使用.to
方法,可以將向量移至任何裝置
2.使用torch.device
方法,能將向量移進和移出GPU
x = torch.tensor(0.163)
if torch.cuda.is_available():
device = torch.device("cuda") # 建立一個a CUDA device
y = torch.ones_like(x, device=device) # 直接在GPU上建立tensor,並不懂one_like代表什麼
x = x.to(device) # or just use strings ``.to("cuda")``
z = x + y
print(x)
print(y)
print(z)
print(z.to("cpu", torch.double)) # ``.to`` 可以改變dtype型別
2.AUTOGRAD: AUTOMATIC DIFFERENTIATION
3.NEURAL NETWORKS
4.TRAINING A CLASSIFIER
5.OPTIONAL: DATA PARALLELISM
6.答疑
1.什麼是dtype
[答] 這個是numpy裡面的, 陣列元素的型別可以通過dtype屬性獲得,主要檢視array 裡面的資料型別