首頁技術(shù)文章正文

基于PyTorch的深度學習入門教程

更新時間:2018-09-18 來源:黑馬程序員技術(shù)社區(qū) 瀏覽量:

本文是關(guān)于Part1的內(nèi)容。


Part1:PyTorch簡單知識

PyTorch是一個基于Python的科學計算框架,用于進行深度學習相關(guān)研究。對于Python語言的入門,可以參考之前的兩篇介紹Python&Numpy的博客。分別是Python& Numpy 教程(上) 和Python & Numpy 教程(下)。這里我們就直接介紹PyTorch中的基本操作。

1 Tensors

Tensors與numpy中的ndarray類似,但是Tensors支持GPU運算。首先來做一些簡單的例子。

導入基本的package:

from __future__ import print_functionimport torch

構(gòu)建一個5*3的未初始化的矩陣:

x = torch.Tensor(5, 3)print(x)

構(gòu)建一個隨機初始化矩陣:

x = torch.rand(5, 3)print(x)

獲取矩陣的size:

print(x.size())

注意,torch.Size實際上是一個tuple,所以它支持相同的運算。

2 運算(Operations)

運算可以使用多種語法表示,我們以加法為例子來說明。

加法:語法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)

加法:原地進行(in-place)的加法

# adds x to yy.add_(x)print(y)

注意,任何原地改變tensor的運算后邊會后綴一個“_”,例如:x.copy_(y),x.t_(),會改變x的值。

你可以使用標準的numpy方式的索引。

print(x[:, 1])


3 NumpyBridge

將torch的Tensor轉(zhuǎn)換為numpy的array,反之亦然。

torch的Tensor和numpy的array分享底層的內(nèi)存地址,所以改變其中一個就會改變另一個。

將torch Tensor轉(zhuǎn)換為numpy array

a = torch.ones(5)print(a)

b = a.numpy()print(b)

觀察numpy array的值怎樣改變。

a.add_(1)print(a)print(b)

將numpy array 轉(zhuǎn)換為torch Tensor

看一下改變numpy array的值是怎樣同時改變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可以被移動到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學院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!

作者:黑馬程序員python+人工智能訓學院

首發(fā):http://python.itheima.com/?v2

分享到:
在線咨詢 我要報名
和我們在線交談!