其他相關操作:
本篇pytorch的tensor拆分與拼接進行展示,包含:
使用方法和含義均在**的批註中給出,因為有較多的輸出,所以設定輸出內容的第乙個值為當前print()方法所在的行
import torch
import numpy as np
import sys
loc = sys._getframe(
)_ =
'\n'
'''cat
第乙個引數為乙個list,其中包含所有的要用於合併的tensor
第二個引數決定在哪乙個維度上進行合併,其餘的維度需要保證相同
'''a = torch.rand(4,
32,8)
b = torch.rand(5,
32,8)
print
(loc.f_lineno, _, torch.cat(
[a, b]
, dim=0)
.shape)
'''stack
必須保證合併的tensor維度完全相同
使用stack進行tensor合併,則在其要合併的維度前面新增乙個維度
這個新新增的維度為要合併的tensor的數量
當其取1時,則合併後的tensor等於第乙個tensor
當其取2時,則合併後的tensor等於第二個tensor
依次相當於對原來每個tensor的選擇
'''c = torch.rand(2,
2,16,
16)d = torch.rand(2,
2,16,
16)e = torch.rand(2,
2,16,
16)print
(loc.f_lineno, _, torch.stack(
[c, d, e]
, dim=2)
.shape)
'''split
可以完成根據元素數量拆分和根據長度拆分
'''f = torch.rand(4,
32,5)
# 根據第乙個維度進行拆分
g, gg, ggg = f.split([1
,1,2
], dim=0)
print
(loc.f_lineno, _, g.shape, _, gg.shape, _, ggg.shape)
# 根據長度進行拆分,將的乙個維度等分為兩份
h, hh = f.split(
2, dim=0)
print
(loc.f_lineno, _, h.shape, _, hh.shape)
'''chunk
使用方法類似於 h, hh = f.split(2, dim=0)
'''i, ii = f.chunk(
2, dim=0)
print
(loc.f_lineno, _, i.shape, _, ii.shape)
15
torch.size([9, 32, 8])
31 torch.size([2, 2, 3, 16, 16])
41 torch.size([1, 32, 5])
torch.size([1, 32, 5])
torch.size([2, 32, 5])
44 torch.size([2, 32, 5])
torch.size([2, 32, 5])
52 torch.size([2, 32, 5])
torch.size([2, 32, 5])
process finished with exit code 0
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...
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...
VC位拆分與拼接
在編寫串列埠通訊時,想到是否可以模擬can通訊,將接收到的wparam型別的變數轉變成乙個結構體變數,並且在傳送時將結構體變數轉變成wparam變數傳送。1.首先定義結構體 typedef volatile struct b wreceiveval receivestruct 2.在接收函式中對結構...