記錄pytorch常用的維度轉換方法

2021-10-04 17:45:57 字數 3179 閱讀 3311

對於pytorch常用的維度轉換方法一直不熟悉,今天在網上查了資料,簡單嘗試之後彙總記錄一下,方便以後查詢

import torch

#****

****

**生成資料**

****

****

#***生成固定資料**

*test1 = torch.

tensor([

[1,2

,3],

[4,5

,6]]

)#**

*生成隨機資料**

*test = torch.

rand(2

,4)#**

*生成符合高斯分布的隨機資料**

*test = torch.

randn(2

,4)#**

*生成一定範圍內的資料**

*test = torch.

arange(1

,6)#test的值為[1,

2,3,

4,5],同樣遵循取值區間左閉右開的原則

#****

****

**檢視資料維度**

****

****

data_size = test.

size()

data_size = test.shape#兩種方式都輸出資料的維度

print

(data_size)#輸出結果:(2

,4)#**

****

****轉換資料維度**

****

****

print

(test1.

size()

)#輸出結果:(2

,3)#**

*view函式**

*test1 = test1.

view(3

,2)#將資料維度由(2

,3)轉換為(3

,2)test1 = test1.

view(-

1,2)#第一位是-

1,代表這一位的資料維度,由資料總維度和第二位的2計算得到,第二位可寫成test1.

size(0

)就不用人為判定第二位的具體數值

#***permute函式**

*test2 = torch.

tensor([

[[1,

2,3]

,[4,

5,6]

]])print

(test2.

size()

)#輸出結果(1

,2,3

)test2 = test2.

permute(0

,2,1

)#代表將test2的資料維度(1

,2,3

)中的第二個維度3和第乙個維度2轉換位置

(下標從0開始)

即將test2的資料維度由(1

,2,3

)轉換為(1

,3,2

)#**

*squeeze和unsqueeze**

*#**squeeze函式是減去乙個一維的維度**

test = torch.

tensor([

[[1,

2,3]

,[4,

5,6]

]])print

(test.

size()

)#test資料維度(1

,2,3

)test = test.

squeeze(0

)#squeeze(0

)代表將第0個維度去掉,並且第0個維度必須是1維

print

(test.

size()

)#test的資料維度變為(2

,3)print

(test)#test變為[[1

,2,3

],[4

,5,6

]]#**unsqueeze函式是增加乙個一維的維度**

test = torch.

tensor([

[1,2

,3],

[4,5

,6]]

)test = test.

unsqueeze(1

)#資料維度是(2

,3),

unsqueeze後在第1個維度處增加1維,即資料維度變為(2

,1,3

)print

(test.

size()

)#(2,1

,3)print

(test)#[[[

1,2,

3]],

[[4,

5,6]

]]#***expand和expand_as**

*#這兩個函式只能對只有乙個元素的資料維度進行擴張

test = torch.

rand(1

,2)print

(test)#假設生成的隨機數是[

-0.15

,0.12

]test = test.

expand(2

,2)#expand函式的引數是數字,並且對維度為(1

,2)的資料,只能擴充套件維度為1的第乙個維度,維度為2的第二個維度必須保持一致。

print

(test)#[[-

0.15

,0.12],

[-0.15

,0.12]]

test2 = torch.

rand(2

,2)test = test.

expand_as

(test2)#expand_as函式的引數是tensor

numpy在檢視資料維度時與torch有些不同

import numpy as np

test = np.

array([

[1,2

,3],

[4,5

,6]]

)print

(test.size)#輸出test資料的元素總數量,即6

print

(test.shape)#輸出test資料的維度,即(2,3)

#轉換資料維度

test = test.

reshape(3

,2)#將原有的(2

,3)維度轉換為(3

,2)

PyTorch中張量 tensor 的維度變換

example in 1 x torch.rand 4,1,28,28 in 2 x.size out 2 torch.size 4,1,28,28 in 3 y x.view 4,28 28 in 4 y.size out 4 torch.size 4,784 in 5 y x.reshape 4...

pytorch的基礎記錄

detach torch.abs input,out none 計算輸入張量的每個元素的絕對值 torch.acos input,out none 返回乙個新張量,包含輸入張量每個元素的反余弦函式 torch.add input,value,out none 對輸入張量input逐元素加上標量值va...

Pytorch 的 常用 操作

一些簡單的操作 torch.view torch.tensor torch.expand bs,1 matrix.topk number,dim 1,largest true,sorted true matrix.zero scatter 1,label,1 matrix變為 one hot 標籤 ...