Pytorch Tutorial (1) -- DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ - Markdown版本

0.基礎準備

官方網頁:https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html#deep-learning-with-pytorch-a-60-minute-blitz

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 裏面的數據類型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章