Tensor的組合與分塊

2022-07-10 08:12:13 字數 1744 閱讀 5039

>>> a = torch.tensor([[1,2],[3,4]])

>>> a

tensor([[1., 2.],

[3., 4.]])

>>> b = torch.tensor([[7,8],[9,10]])

>>> b

tensor([[ 7., 8.],

[ 9., 10.]])

>>> torch.cat([a,b]) #不輸入0則預設按第一維拼接,變成4x2的矩陣

tensor([[ 1., 2.],

[ 3., 4.],

[ 7., 8.],

[ 9., 10.]])

>>> torch.cat([a,b],0)

tensor([[ 1., 2.],

[ 3., 4.],

[ 7., 8.],

[ 9., 10.]])

>>> torch.cat([a,b],1) #按第二維進行拼接,變成乙個2x4的矩陣

tensor([[ 1., 2., 7., 8.],

[ 3., 4., 9., 10.]])

torch.stack()

>>> a

tensor([[1., 2.],

[3., 4.]])

>>> b

tensor([[ 7., 8.],

[ 9., 10.]])

>>> torch.stack([a,b],0)

tensor([[[ 1., 2.],

[ 3., 4.]],

[[ 7., 8.],

[ 9., 10.]]])

>>> torch.stack([a,b],2)

tensor([[[ 1., 7.],

[ 2., 8.]],

[[ 3., 9.],

[ 4., 10.]]])

>>> torch.stack([a,b],1)

tensor([[[ 1., 2.],

[ 7., 8.]],

[[ 3., 4.],

[ 9., 10.]]])

tensor的分塊

>>> a = torch.tensor([[1,2,5],[3,4,6]])

>>> a

tensor([[1., 2., 5.],

[3., 4., 6.]])

>>> torch.chunk(a,2,0)一維分割

(tensor([[1., 2., 5.]]), tensor([[3., 4., 6.]]))

>>> torch.chunk(a,2,1)二維分割

(tensor([[1., 2.],

[3., 4.]]), tensor([[5.],

[6.]]))

>>> torch.split(a,2,0) 第一維

(tensor([[1., 2., 5.],

[3., 4., 6.]]),)

>>> torch.split(a,2,1) 第二維

(tensor([[1., 2.],

[3., 4.]]), tensor([[5.],

[6.]]))

>>> torch.split(a,[1,2],1)  已第二維按照列表中的數(列表中的數代表了分塊的維數即第一塊為一維 第二塊為二維)

(tensor([[1.],

[3.]]), tensor([[2., 5.],

[4., 6.]]))

pytorch的tensor與numpy陣列共享值

網上的很多部落格說tensor與numpy陣列共享記憶體,這是錯誤的 先給結論 tensor與numpy陣列共享部分記憶體,說共享值更嚴謹,且有條件 看 a torch.ones 2,2 b a.numpy print id a print id b 輸出 3030786996336 3030755...

Tensor 拼接與拆分

2.拆分 注意要指出在哪個維度上進行拼接 import torch a torch.rand 4,32,8 b torch.rand 5,32,8 torch.cat a,b dim 0 shape torch.size 9,32,8 且除了要拼接的維度外,其他維度數值必須保持一致,否則會報錯 im...

(最直觀)Tensor與矩陣的關係

你可以認為乙個二階張量就是我們平常所說的矩陣,一階張量可以認為是乙個向量.對於乙個二階張量你可以用語句t i,j 來訪問其中的任何元素.而對於三階張量你可以用 t i,j,k 來訪問其中的任何元素.張量是所有深度學習框架中最核心的元件,因為後續的所有運算和優化演算法都是基於張量進行的。幾何代數中定義...