您好,登錄后才能下訂單哦!
AvgPool2d函數如何在pytorch中使用?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
import torch import torch.nn as nn import torch.nn.functional as F from torch.autograd import Variable import numpy as np input = Variable(torch.Tensor([[[1, 3, 3, 4, 5, 6, 7], [1, 2, 3, 4, 5, 6, 7]], [[1, 3, 3, 4, 5, 6, 7], [1, 2, 3, 4, 5, 6, 7]]])) print("input shape",input.shape) c = F.avg_pool1d(input, kernel_size=3, stride=2) print(c) print("c shape:",c.shape) # m = nn.AvgPool2d(3, stride=2) m = nn.AvgPool2d((2, 2), stride=(2, 2)) input = Variable(torch.randn(20, 18, 50, 32)) # bach是20,圖片size是50*31,chanel是18(通道是18,也就是每張圖有18個fature map) input = np.array([[[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]], [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]], [[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]], [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]]]) #size2*2*4*4 print("input shape:",input.shape) input = Variable(torch.FloatTensor(input)) output = m(input) print(output) print("output shape:",output.shape)#(2,2,2,2)
輸出:
input shape torch.Size([2, 2, 7]) tensor([[[ 2.3333, 4.0000, 6.0000], [ 2.0000, 4.0000, 6.0000]], [[ 2.3333, 4.0000, 6.0000], [ 2.0000, 4.0000, 6.0000]]]) c shape: torch.Size([2, 2, 3]) input shape: (2, 2, 4, 4) tensor([[[[ 1.5000, 3.5000], [ 1.5000, 3.5000]], [[ 1.5000, 3.5000], [ 1.5000, 3.5000]]], [[[ 1.5000, 3.5000], [ 1.5000, 3.5000]], [[ 1.5000, 3.5000], [ 1.5000, 3.5000]]]]) output shape: torch.Size([2, 2, 2, 2])
pytorch中的F.avg_pool1d()平均池化操作作用于一維,input的維度是三維比如[2,2,7]。F.avg_pool1d()中核size是3,步長是2表示每三個數取平均,每隔兩個數取一次.比如[1,3,3,4,5,6,7]安照3個數取均值,兩步取一次,那么結果就是[ 2.3333 ,4 ,6 ],也就是核是一維的,也只作用于一個維度。按照池化操作計算公式input size為[2,2,7],kernel size為3,步長為2,則輸出維度計算(7-3)/2+1=3所以輸出維度是[2,2,3],這與輸出結果是一致的。
pytorch中的F.avg_pool2d(),input是維度是4維如[2,2,4,4],表示這里批量數是2也就是兩張圖像,這里應該是有通道(feature map)數量是2,圖像是size是4*4的.核size是(2,2)步長是(2,2)表示被核覆蓋的數取平均,橫向縱向的步長都是2.那么核是二維的,所以取均值時也是覆蓋二維取的。輸出中第一個1.5的計算是:1+2+1+2/4=1.5.表示第一張圖像左上角的四個像素點的均值。按照池化操作計算公式input size為[2,2,4,4],kernel size為2*2,步長為2,則輸出維度計算(4-2)/2+1=2所以輸出維度是[2,2,2,2],這與輸出結果是一致的。
關于AvgPool2d函數如何在pytorch中使用問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。