PyTorch入門(二) 張量的建立

2021-09-29 11:05:02 字數 4645 閱讀 3316

張量的建立

2.依據數值建立

依據概率分布

張量是乙個多維陣列,它是標量、向量、矩陣的高維拓展。

特殊的張量:

標量——0維張量

向量——1維張量

矩陣——2維張量

variable是torch.autograd中的資料型別主要用於封裝tensor,進行自動求導

variable的屬性有:

data:被包裝的tensor

grad:data的梯度

grad_fn: 建立tensor的function,是自動求導的關鍵

requires_grad:指示是否需要梯度

is_leaf:指示是否是葉子結點(張量)

tensor:從pytorch0.4.0版本開始,variable併入tensor中。

tensor除了擁有variable的屬性外,還有:

dtype:張量的資料型別,如torch.floattensor,torch.cuda.floattensor

shape:張量的形狀,如:(64,3,224,224)

device:張量所在裝置,gpu/cpu,是借宿的關鍵

torch.tensor(

data,

dtype=

none

, device=

none

, requires_grad=

false

, pin_memory=

false

)

功能:從data建立tensor

data:資料,可以是list,numpy

dtype:資料型別,預設與data的一致

device:所在的裝置,cuda/cpu

requires_grad:是否需要梯度

pin_memory:是否存於鎖業記憶體

功能:從numpy建立tensor

注意:從torch.from_numpy建立的tensor與原ndarray共享記憶體,當修改其中乙個資料,另外乙個也將會被改動。

torch.zeros(

size,

out=

none

, dtype=

none

, layout=torch,strided

device=

none

requires_grad=

false

)

功能:依size建立全0張量

size:張量的形狀,如(3,3)、(3,224,224)

out:輸出的張量

layout:記憶體中的布局形式,有strided,sparse_coo(資料為稀疏矩陣時才使用)

device:所在的裝置,gpu/cpu

requires_grad:是否需要梯度

torch.zeros_like(

input_data,

dtype=

none

, layout=torch.strided,

device=

none

, requires_grad=

false

)

功能:依據input_data的形狀建立全0張量

input_data:建立與input同形狀的全0張量

dtype:資料型別

layout:記憶體中的布局形式

功能同torch.zeros,不同之處在於建立的為全1張量

功能同torch.zeros_like(),不同點在於建立全1張量

torch.full(

size,

fill_value,

out=

none

, dtype=

none

, layout=torch.strided,

requires_grad=

false

)

功能:依據size輸入的形狀,建立值全為fill_value的張量

功能與torch.zeros_like類似,填充某個值

torch.arange(

start=0,

end,

step=1,

out=

none

, dtype=

none

, layout=torch.strided,

device=

none

, requires_grad=

false

)

功能:建立等差的1維張量

注意事項:數值區間為[start,end)左開右閉

start:數列起始值

end:數列結束值(取不到)

step:數列的公差,預設為1

torch.linspace(

start,

end,

steps=

100,

out=

none

, dtype=

none

, layout=torch.strided,

device=

none

, requires_grad=

false

)

功能:建立均分的1維張量

注意事項:數值區間為[start,end] (全部能取到)

start:數列起始值

end:數列結束值

steps:數列長度(數列中元素的個數)

torch.logspace(

start,

end,

steps=

100,

base=

10.0

, out=

none

, dtype=

none

, layout=torch.strided,

device=

none

, requires_grad=

false

)

功能:建立對數均分的1維張量

注意事項:長度為steps,底數為base

start:數列起始值

end:數列結束值

steps:數列長度(數列中元素的個數)

base:對數函式的底數,預設值為10.0

torch.eye(

n,m=

none

, dtype=

none

, layout=torch.strided,

device=

none

, requires_grad=

false

)

功能:建立單位對角矩陣(2維張量)

注意:預設為方陣

n:矩陣行數

m:矩陣列數

torch.normal(mean,std,out=

none

)

功能:生成正態分佈(高斯分布)

mean:均值

std:標準差

四種模式:

mean為標量,std為標量

mean為標量,std為張量

mean為張量,std為標量

mean為張量,std為張量

功能,生成標準正態分佈,大小為size。功能類似torch.zeros()

功能:生成標準正態分佈,大小為input_data的size

在區間[0,1)上生成均勻分布

torch.randint(

low=0,

high,

size,

out=

none

, dtype=

none

, layout=torch.strided,

device=

none

, requires_grad=

false

)

在區間[low,high)生成整數均勻分布的size大小的張量

size:張量的形狀

torch.randperm(

n,out=

none

, dtype=torch.int64,

layout=torch.strided,

device=

none

, requires_grad=

false

)

功能:生成從0到n-1的隨機排列

n:張量的長度

torch.bernoulli(

input,*

, generator=

none

, out=

none

)

功能:以input為概率,生成伯努利分布

PyTorch學習筆記1 張量

pytorch中資料集用tensor來表示,tensor與python中的list類似,但是其內部儲存時以連續記憶體單元儲存,可以通過下標計算出記憶體位址,然後直接讀出數值,因此訪問效率很高,同時由於與numpy的記憶體儲存基本相同,所以numpy的ndarray與tensor之間轉換,不論有多少元...

pytorch 學習筆記(一) 張量

pytorch 是乙個基於 python 的科學計算包,主要定位兩類人群 tensors 類似於 numpy 的 ndarrays 同時 tensors 可以使用 gpu 進行計算。1.匯入 from future import print function import torch2.構造乙個5x...

tensorflow005 張量操作的api

固定值張量 tf.zeros shape,dtype tf.float32,name none 建立所有元素設定為零的張量。此操作返回乙個dtype具有形狀shape和所有元素設定為零的型別的張量。tf.zeros like tensor,dtype none,name none 給tensor定單...