對於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 標籤 ...