欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作

 更新時間:2021年05月22日 09:41:26   作者:SZU_Hadooper  
這篇文章主要介紹了pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

F.avg_pool1d()數(shù)據(jù)是三維輸入

input維度: (batch_size,channels,width)channel可以看成高度

kenerl維度:(一維:表示width的跨度)channel和輸入的channel一致可以認為是矩陣的高度

假設kernel_size=2,則每倆列相加求平均,stride默認和kernel_size保持一致,越界則丟棄(下面表示1,2列和3,4列相加求平均)

input = torch.tensor([[1,1,1,1,1],[1,1,1,1,1],[0,0,0,1,1],[1,1,1,1,1],[1,1,1,1,1]]).unsqueeze(0).float()
print(input)
m = F.avg_pool1d(input,kernel_size=2)
m

tensor([[[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [0., 0., 0., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]]])
tensor([[[1.0000, 1.0000],
         [1.0000, 1.0000],
         [0.0000, 0.5000],
         [1.0000, 1.0000],
         [1.0000, 1.0000]]])

假設kenerl_size=3,表示前3列相加求平均,后面的不足3列丟棄

input = torch.tensor([[1,1,1,1,1],[1,1,1,1,1],[0,0,0,1,1],[1,1,1,1,1],[1,1,1,1,1]]).unsqueeze(0).float()
print(input)
m = F.avg_pool1d(input,kernel_size=3)
m
tensor([[[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [0., 0., 0., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]]])
tensor([[[1.],
         [1.],
         [0.],
         [1.],
         [1.]]])

input = torch.tensor([[1,1,1,1,1],[1,1,1,1,1],[0,0,0,1,1],[1,1,1,1,1],[1,1,1,1,1]]).unsqueeze(0).float()
print(input)
m = F.avg_pool1d(input,kernel_size=4)
m
tensor([[[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [0., 0., 0., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]]])
tensor([[[1.0000],
         [1.0000],
         [0.2500],
         [1.0000],
         [1.0000]]])

假設stride=1每次移動一個步伐

input = torch.tensor([[1,1,1,1,1],[1,1,1,1,1],[0,0,0,1,1],[1,1,1,1,1],[1,1,1,1,1]]).unsqueeze(0).float()
print(input)
m = F.avg_pool1d(input,kernel_size=2,stride=1)
m
tensor([[[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [0., 0., 0., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]]])
tensor([[[1.0000, 1.0000, 1.0000, 1.0000],
         [1.0000, 1.0000, 1.0000, 1.0000],
         [0.0000, 0.0000, 0.5000, 1.0000],
         [1.0000, 1.0000, 1.0000, 1.0000],
         [1.0000, 1.0000, 1.0000, 1.0000]]])
 
input = torch.tensor([[1,1,1,1,1],[1,1,1,1,1],[0,0,0,1,1],[1,1,1,1,1],[1,1,1,1,1]]).unsqueeze(0).float()
print(input)
m = F.avg_pool1d(input,kernel_size=4,stride=1)
m
tensor([[[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [0., 0., 0., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]]])
tensor([[[1.0000, 1.0000],
         [1.0000, 1.0000],
         [0.2500, 0.5000],
         [1.0000, 1.0000],
         [1.0000, 1.0000]]])

F.avg_pool2d()數(shù)據(jù)是四維輸入

input維度: (batch_size,channels,height,width)

kenerl維度:(二維:表示width的跨度)channel和輸入的channle一致,如果數(shù)據(jù)是三維,則channel為1.(如果只寫一個數(shù)n,kenerl=(n,n))

stride默認和kenerl一致,這是個二維的,所以在height和width上均和kenerl一致,越界同樣丟棄。

跟cnn卷積一致

input = torch.tensor([[1,1,1,1,1],[1,1,1,1,1],[0,0,0,1,1],[1,1,1,1,1],[1,1,1,1,1]]).unsqueeze(0).float()
print(input.size())
print(input)
m = F.avg_pool2d(input,kernel_size=(4,4))
m
torch.Size([1, 5, 5])
tensor([[[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [0., 0., 0., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]]])
tensor([[[0.8125]]])

input = torch.tensor([[1,1,1,1,1],[1,1,1,1,1],[0,0,0,1,1],[1,1,1,1,1],[1,1,1,1,1]]).unsqueeze(0).float()
print(input.size())
print(input)
m = F.avg_pool2d(input,kernel_size=(4,4),stride=1)
m
torch.Size([1, 5, 5])
tensor([[[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [0., 0., 0., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]]])
tensor([[[0.8125, 0.8750],
         [0.8125, 0.8750]]])

如果求列的平均kenerl=(1,5),此時默認stride=(1,5)

input = torch.tensor([[1,1,1,1,1],[1,1,1,1,1],[0,0,0,1,1],[1,1,1,1,1],[1,1,1,1,1]]).unsqueeze(0).float()
print(input.size())
print(input)
m = F.avg_pool2d(input,kernel_size=(1,5))
m
torch.Size([1, 5, 5])
tensor([[[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [0., 0., 0., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]]])
tensor([[[1.0000],
         [1.0000],
         [0.4000],
         [1.0000],
         [1.0000]]])

如果求行的平均kenerl=(5,1),此時默認stride=(5,1),用卷積的概念取思考

input = torch.tensor([[1,1,1,1,1],[1,1,1,1,1],[0,0,0,1,1],[1,1,1,1,1],[1,1,1,1,1]]).unsqueeze(0).float()
print(input.size())
print(input)
m = F.avg_pool2d(input,kernel_size=(5,1))
m
torch.Size([1, 5, 5])
tensor([[[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [0., 0., 0., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]]])
tensor([[[0.8000, 0.8000, 0.8000, 1.0000, 1.0000]]])

對于四維的數(shù)據(jù),channel默認和輸入一致

input=torch.randn(10,3,4,4)
m=F.avg_pool2d(input,(4,4))
print(m.size())
torch.Size([10, 3, 1, 1])

補充:PyTorch中AdaptiveAvgPool函數(shù)解析

自適應池化(AdaptiveAvgPool1d):

對輸入信號,提供1維的自適應平均池化操作 對于任何輸入大小的輸入,可以將輸出尺寸指定為H*W,但是輸入和輸出特征的數(shù)目不會變化。

torch.nn.AdaptiveAvgPool1d(output_size)
#output_size:輸出尺寸

對輸入信號,提供1維的自適應平均池化操作 對于任何輸入大小的輸入,可以將輸出尺寸指定為H*W,但是輸入和輸出特征的數(shù)目不會變化。

# target output size of 5
m = nn.AdaptiveAvgPool1d(5)
input = autograd.Variable(torch.randn(1, 64, 8))
output = m(input)

自適應池化(AdaptiveAvgPool2d):

class torch.nn.AdaptiveAvgPool2d(output_size)

對輸入信號,提供2維的自適應平均池化操作 對于任何輸入大小的輸入,可以將輸出尺寸指定為H*W,但是輸入和輸出特征的數(shù)目不會變化。

參數(shù):

output_size: 輸出信號的尺寸,可以用(H,W)表示H*W的輸出,也可以使用耽擱數(shù)字H表示H*H大小的輸出

# target output size of 5x7
m = nn.AdaptiveAvgPool2d((5,7))
input = autograd.Variable(torch.randn(1, 64, 8, 9))
# target output size of 7x7 (square)
m = nn.AdaptiveAvgPool2d(7)
input = autograd.Variable(torch.randn(1, 64, 10, 9))
output = m(input)

自適應池化的數(shù)學解釋:

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python監(jiān)控文件或目錄變化

    python監(jiān)控文件或目錄變化

    這篇文章主要為大家詳細介紹了python監(jiān)控文件或目錄變化的實現(xiàn)代碼,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 深入剖析Python的列表和元組

    深入剖析Python的列表和元組

    這篇文章主要介紹了深入剖析Python的列表和元組,Python有4個內(nèi)建的數(shù)據(jù)結(jié)構(gòu),它們可以統(tǒng)稱為容器,因為它們實際上是一些“東西”組合而成的結(jié)構(gòu),而這些“東西”,可以是數(shù)字、字符甚至列表,或是它們的組合,需要的朋友可以參考下
    2023-07-07
  • Django 聯(lián)表查詢操作方法

    Django 聯(lián)表查詢操作方法

    作為一個django使用的新手,在做練手項目中對聯(lián)表查詢感覺比較生疏,最近兩天整理了一些連表查詢應用場景和使用方法以及無法使用django中ORM操作的原生查詢,對Django 聯(lián)表查詢操作感興趣的朋友跟隨小編一起看看吧
    2023-09-09
  • Python利用xmltodict模塊實現(xiàn)處理XML數(shù)據(jù)

    Python利用xmltodict模塊實現(xiàn)處理XML數(shù)據(jù)

    理解和處理XML數(shù)據(jù)在Python中是一項常見任務,xmltodict便是一個Python庫,用于將XML數(shù)據(jù)解析為易于處理的Python字典,下面我們就來學習一下xmltodict庫的具體使用吧
    2023-11-11
  • DataFrame 將某列數(shù)據(jù)轉(zhuǎn)為數(shù)組的方法

    DataFrame 將某列數(shù)據(jù)轉(zhuǎn)為數(shù)組的方法

    下面小編就為大家分享一篇DataFrame 將某列數(shù)據(jù)轉(zhuǎn)為數(shù)組的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python實現(xiàn)微信遠程控制電腦

    python實現(xiàn)微信遠程控制電腦

    這篇文章主要為大家詳細介紹了python實現(xiàn)微信遠程控制電腦的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • python中的sort方法使用詳解

    python中的sort方法使用詳解

    這篇文章主要介紹了python中的sort方法,需要的朋友可以參考下
    2014-07-07
  • python中如何設置list步長

    python中如何設置list步長

    這篇文章主要介紹了python中如何設置list步長,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • pandas進行時間數(shù)據(jù)的轉(zhuǎn)換和計算時間差并提取年月日

    pandas進行時間數(shù)據(jù)的轉(zhuǎn)換和計算時間差并提取年月日

    這篇文章主要介紹了pandas進行時間數(shù)據(jù)的轉(zhuǎn)換和計算時間差并提取年月日,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • Python延時操作實現(xiàn)方法示例

    Python延時操作實現(xiàn)方法示例

    這篇文章主要介紹了Python延時操作實現(xiàn)方法,結(jié)合實例形式分析了Python基于sched庫與time庫實現(xiàn)延時操作的方法,需要的朋友可以參考下
    2018-08-08

最新評論