Tensor 拼接與拆分

2021-10-07 05:50:39 字數 1739 閱讀 5048

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])

且除了要拼接的維度外,其他維度數值必須保持一致,否則會報錯:

>>> import torch

>>> a = torch.rand(4,3,32,32)

>>> b = torch.rand(4,1,32,32)

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

traceback (most recent call last):

file "", line 1, in runtimeerror: sizes of tensors must match except in dimension 0. got 3 and 1 in dimension 1

會建立新的維度,所以在舊維度上必須完全一摸一樣:

>>> import torch

>>> a = torch.rand(32,8)

>>> b = torch.rand(32,8)

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

torch.size([2, 32, 8])

根據長度拆分

>>> import torch

>>> a = torch.rand(3,32,8)

>>> aa, bb = a.split([2,1],dim=0)

>>> aa.shape, bb.shape

(torch.size([2, 32, 8]), torch.size([1, 32, 8]))

>>> import torch

>>> a = torch.rand(2,32,8)

>>> aa,bb = a.split(1,dim=0)

>>> aa.shape,bb.shape

(torch.size([1, 32, 8]), torch.size([1, 32, 8]))

如果把2拆分成n塊,每塊的長度是2,則會報錯。

在理論上就是不拆分,也就是乙個拆分成一塊,但在pytorch中不可以這樣做。

>>> import torch

>>> a = torch.rand(2,32,8)

>>> aa,bb = a.split(2,dim=0)

traceback (most recent call last):

file "", line 1, in valueerror: not enough values to unpack (expected 2, got 1)

按數量拆分:

就比較好理解,算除法就行。

>>> import torch

>>> a = torch.rand(8,32,8)

>>> aa,bb = a.chunk(2,dim=0)

>>> aa.shape,bb.shape

(torch.size([4, 32, 8]), torch.size([4, 32, 8]))

pytorch拼接與拆分

cat stack cat在指定的維度上進行連線 stack建立了新的維度進行連線。in 1 import torch in 2 a torch.rand 4,32,8 in 3 b torch.rand 5,32,8 in 4 torch.cat a,b dim 0 shape out 4 tor...

VC位拆分與拼接

在編寫串列埠通訊時,想到是否可以模擬can通訊,將接收到的wparam型別的變數轉變成乙個結構體變數,並且在傳送時將結構體變數轉變成wparam變數傳送。1.首先定義結構體 typedef volatile struct b wreceiveval receivestruct 2.在接收函式中對結構...

pytorch入門 拆分與拼接

其他相關操作 本篇pytorch的tensor拆分與拼接進行展示,包含 使用方法和含義均在 的批註中給出,因為有較多的輸出,所以設定輸出內容的第乙個值為當前print 方法所在的行 import torch import numpy as np import sys loc sys.getframe...