pytorch入門 拆分與拼接

2021-10-09 04:43:36 字數 1857 閱讀 5087

其他相關操作:

本篇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.在接收函式中對結構...