
一. torch.repeat()函數(shù)解析
1. 說明
官網(wǎng):torch.tensor.repeat(),函數(shù)說明如下圖所示:

2. 函數(shù)功能
torch.tensor.repeat()函數(shù)可以對張量進(jìn)行重復(fù)擴(kuò)充
1) 當(dāng)參數(shù)只有兩個(gè)時(shí):(行的重復(fù)倍數(shù),列的重復(fù)倍數(shù)),1表示不重復(fù)。
2) 當(dāng)參數(shù)有三個(gè)時(shí):(通道數(shù)的重復(fù)倍數(shù),行的重復(fù)倍數(shù),列的重復(fù)倍數(shù)),1表示不重復(fù)。
3. 代碼例子如下:
3.1 輸入一維張量,參數(shù)為一個(gè),即表示在列上面進(jìn)行重復(fù)n次
a = torch.randn(3)
a,a.repeat(4)
結(jié)果如下所示:
(tensor([ 0.81, -0.57, 0.10]),
tensor([ 0.81, -0.57, 0.10, 0.81, -0.57, 0.10, 0.81, -0.57, 0.10, 0.81,
-0.57, 0.10]))
3.2 輸入一維張量,參數(shù)為兩個(gè)(m,n),即表示先在列上面進(jìn)行重復(fù)n次,再在行上面重復(fù)m次,輸出張量為二維
a = torch.randn(3)
a,a.repeat(4,2)
(tensor([ 0.06, -0.76, -0.59]),
tensor([[ 0.06, -0.76, -0.59, 0.06, -0.76, -0.59],
[ 0.06, -0.76, -0.59, 0.06, -0.76, -0.59],
[ 0.06, -0.76, -0.59, 0.06, -0.76, -0.59],
[ 0.06, -0.76, -0.59, 0.06, -0.76, -0.59]]))
3.3 輸入一維張量,參數(shù)為三個(gè)(b,m,n),即表示先在列上面進(jìn)行重復(fù)n次,再在行上面重復(fù)m次,最后在通道上面重復(fù)b次,輸出張量為三維
a = torch.randn(3)
a,a.repeat(3,4,2)
輸出結(jié)果如下:
(tensor([2.25, 0.49, 1.47]),
tensor([[[2.25, 0.49, 1.47, 2.25, 0.49, 1.47],
[2.25, 0.49, 1.47, 2.25, 0.49, 1.47],
[2.25, 0.49, 1.47, 2.25, 0.49, 1.47],
[2.25, 0.49, 1.47, 2.25, 0.49, 1.47]],
[[2.25, 0.49, 1.47, 2.25, 0.49, 1.47],
[2.25, 0.49, 1.47, 2.25, 0.49, 1.47],
[2.25, 0.49, 1.47, 2.25, 0.49, 1.47],
[2.25, 0.49, 1.47, 2.25, 0.49, 1.47]],
[[2.25, 0.49, 1.47, 2.25, 0.49, 1.47],
[2.25, 0.49, 1.47, 2.25, 0.49, 1.47],
[2.25, 0.49, 1.47, 2.25, 0.49, 1.47],
[2.25, 0.49, 1.47, 2.25, 0.49, 1.47]]]))
3.4 輸入二維張量,參數(shù)為兩個(gè)(m,n),即表示先在列上面進(jìn)行重復(fù)n次,再在行上面重復(fù)m次,輸出張量為兩維(注意參數(shù)個(gè)數(shù)必須大于輸入張量維度個(gè)數(shù))
a = torch.randn(3,2)
a,a.repeat(4,2)
輸出結(jié)果如下:
(tensor([[-0.58, -1.21],
[-0.35, 0.68],
[ 0.33, 0.70]]),
tensor([[-0.58, -1.21, -0.58, -1.21],
[-0.35, 0.68, -0.35, 0.68],
[ 0.33, 0.70, 0.33, 0.70],
[-0.58, -1.21, -0.58, -1.21],
[-0.35, 0.68, -0.35, 0.68],
[ 0.33, 0.70, 0.33, 0.70],
[-0.58, -1.21, -0.58, -1.21],
[-0.35, 0.68, -0.35, 0.68],
[ 0.33, 0.70, 0.33, 0.70],
[-0.58, -1.21, -0.58, -1.21],
[-0.35, 0.68, -0.35, 0.68],
[ 0.33, 0.70, 0.33, 0.70]]))
3.5 輸入二維張量,參數(shù)為三個(gè)(b,m,n),即表示先在列上面進(jìn)行重復(fù)n次,再在行上面重復(fù)m次,最后在通道上面重復(fù)b次,輸出張量為三維。(注意輸出張量維度個(gè)數(shù)為參數(shù)個(gè)數(shù))
a = torch.randn(3,2)
a,a.repeat(3,4,2)
輸出結(jié)果如下:
(tensor([[-0.75, 1.20],
[-1.50, 1.75],
[-0.05, 0.40]]),
tensor([[[-0.75, 1.20, -0.75, 1.20],
[-1.50, 1.75, -1.50, 1.75],
[-0.05, 0.40, -0.05, 0.40],
[-0.75, 1.20, -0.75, 1.20],
[-1.50, 1.75, -1.50, 1.75],
[-0.05, 0.40, -0.05, 0.40],
[-0.75, 1.20, -0.75, 1.20],
[-1.50, 1.75, -1.50, 1.75],
[-0.05, 0.40, -0.05, 0.40],
[-0.75, 1.20, -0.75, 1.20],
[-1.50, 1.75, -1.50, 1.75],
[-0.05, 0.40, -0.05, 0.40]],
[[-0.75, 1.20, -0.75, 1.20],
[-1.50, 1.75, -1.50, 1.75],
[-0.05, 0.40, -0.05, 0.40],
[-0.75, 1.20, -0.75, 1.20],
[-1.50, 1.75, -1.50, 1.75],
[-0.05, 0.40, -0.05, 0.40],
[-0.75, 1.20, -0.75, 1.20],
[-1.50, 1.75, -1.50, 1.75],
[-0.05, 0.40, -0.05, 0.40],
[-0.75, 1.20, -0.75, 1.20],
[-1.50, 1.75, -1.50, 1.75],
[-0.05, 0.40, -0.05, 0.40]],
[[-0.75, 1.20, -0.75, 1.20],
[-1.50, 1.75, -1.50, 1.75],
[-0.05, 0.40, -0.05, 0.40],
[-0.75, 1.20, -0.75, 1.20],
[-1.50, 1.75, -1.50, 1.75],
[-0.05, 0.40, -0.05, 0.40],
[-0.75, 1.20, -0.75, 1.20],
[-1.50, 1.75, -1.50, 1.75],
[-0.05, 0.40, -0.05, 0.40],
[-0.75, 1.20, -0.75, 1.20],
[-1.50, 1.75, -1.50, 1.75],
[-0.05, 0.40, -0.05, 0.40]]]))
參考知識(shí)文章