>>> 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 來訪問其中的任何元素.張量是所有深度學習框架中最核心的元件,因為後續的所有運算和優化演算法都是基於張量進行的。幾何代數中定義...