pytorch中torch.cat(),torch.chunk(),torch.split。。。⼀、torch.cat()函数
字符串函数注册登录
熟悉C字符串的同学们应该都⽤过strcat()函数,这个函数在C/C++程序中⽤于连接2个C字符串。在pytorch中,同样有这样的函数,那就是torch.cat()函数.
先上源码定义:torch.cat(tensors,dim=0,out=None)
第⼀个参数tensors是你想要连接的若⼲个张量,按你所传⼊的顺序进⾏连接,注意每⼀个张量需要形状相同,或者更准确的说,进⾏⾏连接的张量要求列数相同,进⾏列连接的张量要求⾏数相同
第⼆个参数dim表⽰维度,dim=0则表⽰按⾏连接,dim=1表⽰按列连接
sor([[1,2,3,4],[1,2,3,4]])
sor([[1,2,3,4,5],[1,2,3,4,5]])
print(torch.cat((a,b),1))
#输出结果为:
tensor([[1, 2, 3, 4, 1, 2, 3, 4, 5],
[1, 2, 3, 4, 1, 2, 3, 4, 5]])
⼆、torch.chunk()函数
torch.cat()函数是把各个tensor连接起来,这⾥的torch.chunk()的作⽤是把⼀个tensor均匀分割成若⼲个⼩tensor
源码定义:torch.chunk(intput,chunks,dim=0)
第⼀个参数input是你想要分割的tensor
第⼆个参数chunks是你想均匀分割的份数,如果该tensor在你要进⾏分割的维度上的size不能被chunks整除,则最后⼀份会略⼩(也可能为空)
第三个参数表⽰分割维度,dim=0按⾏分割,dim=1表⽰按列分割
该函数返回由⼩tensor组成的list
sor([[1,4,7,9,11],[2,5,8,9,13]])
print(torch.chunk(c,3,1))
#输出结果为:
(tensor([[1, 4],
[2, 5]]), tensor([[7, 9],
[8, 9]]), tensor([[11],
[13]]))
三、torch.split()函数
这个函数可以说是torch.chunk()函数的升级版本,它不仅可以按份数均匀分割,还可以按特定⽅案进⾏分割。
源码定义:torch.split(tensor,split_size_or_sections,dim=0)
第⼀个参数是待分割张量
第⼆个参数有两种形式。
⼀种是分割份数,这就和torch.chunk()⼀样了。
第⼆种这是分割⽅案,这是⼀个list,待分割张量将会分割为len(list)份,每⼀份的⼤⼩取决于list中的元素
第三个参数为分割维度
section=[1,2,1,2,2]
d=torch.randn(8,4)
print(torch.split(d,section,dim=0))
#输出结果为:
(tensor([[ 0.5388, -0.8537,  0.5539,  0.7793]]), tensor([[ 0.1270,  2.6241, -0.7594,  0.4644],
[ 0.8160,  0.5553,  0.1234, -1.1157]]), tensor([[-0.4433, -0.3093, -2.0134, -0.4277]]), tensor([[-0.4297,  0.2532,  0.2789, -0.3068],
[ 1.4208, -0.1202,  0.9256, -1.2127]]), tensor([[ 0.3542, -0.4656,  1.2683,  0.8753],
[-0.2786, -0.2180,  0.3991,  0.5658]]))

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。