參考《深度學習框架PyTorch:入門與實踐_陳云(著)》
一、認識Tensor
1.1 Tensor定義
Tensor 是 PyTorch 中重要的數(shù)據(jù)結構,可認為是一個高維數(shù)組。它可以是一個數(shù)(標量)一維數(shù)組(向量)二維數(shù)組(陣)或更高的數(shù)組。Tensor 和 numpy的ndarrays類似,但Tensor 可以使用GPU加速。
import torch
# 創(chuàng)建一個5*3的矩陣
x = torch.Tensor(5, 3)
# 查看Tensor的形狀
print(x.size())
# 查看Tensor某一維的大小,兩種寫法等價
print(x.size()[0], x.size(1))
'''
torch.Size([5, 3])
5 3
'''
torch.size是tuple對象的子類,因此它支持 tuple 的所有操作,如xsize0[0]。
# 使用[0,1]均勻分布隨機初始化二維數(shù)組
y = torch.rand(5, 3)
1.2 Tensor運算操作
# Tensor加法的三種寫法
print(x + y)
print(torch.add(x, y))
print(torch.add(x, y, out=torch.Tensor(5, 3)))
# 將一個Tensor加到另一個Tensor
print(y.add(x)) #普通加法,不改變y的內(nèi)容
print(y.add_(x)) # inplace加法,改變y的內(nèi)容
函數(shù)名后面帶下劃線_的函數(shù)會修改 Tensor 本身。例如,x.add_()和x.t_()會改變x,但x.add()和x.t()會返回一個新的 Tensor,而x不變。
Tensor的切片操作與numpy類似,Tensor還支持很多操作,包括數(shù)學運算、線性代數(shù)、選擇、切片等,其接口設計與numpy極為相似。
print(x[:, 1])
'''
tensor([0.0000e+00, 1.0516e-35, 0.0000e+00, 1.0515e-35, 0.0000e+00])
'''
1.3 Tensor與numpy轉換
Tensor和numpy的數(shù)組間的互操作非常容易且快速。Tensor 不支持的操作,可以先轉為 numpy 數(shù)組處理,之后再轉回 Tensor。Tensor 和 numpy 對象共享內(nèi)存,所以它們之間的轉換很快,而且?guī)缀醪粫馁Y源。文章來源:http://www.zghlxwxcb.cn/news/detail-739432.html
# tensor——》numpy array
a = torch.ones(5)
b = a.numpy()
'''
a tensor([1., 1., 1., 1., 1.])
b [1. 1. 1. 1. 1.]
'''
a.add_(1)
'''
a tensor([2., 2., 2., 2., 2.])
b tensor([2., 2., 2., 2., 2.])
'''
import numpy as np
# numpy array——》tensor
a = np.ones(5)
b = torch.from_numpy(a)
Tensor可通過.cuda方法轉為GPU的Tensor,從而享受GPU帶來的加速運算。文章來源地址http://www.zghlxwxcb.cn/news/detail-739432.html
# 在不支持CUDA的機器下,這一步不會運行
if torch.cuda.is_available():
x = x.cuda()
y = y.cuda()
print(x+y)
到了這里,關于《Pytorch新手入門》第一節(jié)-認識Tensor的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!