pytorch進(jìn)行上采樣的種類實(shí)例
更新時(shí)間:2020年02月18日 14:13:12 作者:yangdashi888
今天小編就為大家分享一篇pytorch進(jìn)行上采樣的種類實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
1、其中再語義分割比較常用的上采樣:
其實(shí)現(xiàn)方法為:
def upconv2x2(in_channels, out_channels, mode='transpose'): if mode == 'transpose': # 這個(gè)上采用需要設(shè)置其輸入通道,輸出通道.其中kernel_size、stride # 大小要跟對應(yīng)下采樣設(shè)置的值一樣大小。這樣才可恢復(fù)到相同的wh。這里時(shí)反卷積操作。 return nn.ConvTranspose2d( in_channels, out_channels, kernel_size=2, stride=2) else: # out_channels is always going to be the same # as in_channels # 這里不會改變通道數(shù),其中scale_factor是上采用的放大因子,其是相對于當(dāng)前的 # 輸入大小的倍數(shù) return nn.Sequential( nn.Upsample(mode='bilinear', scale_factor=2, align_corners=True)) # 這里的代碼是在這里設(shè)置多一個(gè)卷積,這樣子就起到了可以修改其輸出通道的功能了。 # 相當(dāng)于功能跟ConvTranspose2d()差不多,只是上采樣的方法不同 conv1x1((in_channels, out_channels)) def conv1x1(in_channels, out_channels, groups=1): return nn.Sequential(nn.Conv2d( in_channels, out_channels, kernel_size=1, groups=groups, stride=1), nn.BatchNorm2d(out_channels))
另一種上采樣的方法是,參考代碼:segnet_pytorch:
# Stage 5 x51 = F.relu(self.bn51(self.conv51(x4p))) x52 = F.relu(self.bn52(self.conv52(x51))) x53 = F.relu(self.bn53(self.conv53(x52))) #這個(gè)id5記錄的是池化操作時(shí)最大值的index,其要設(shè)置參數(shù)return_indices為True x5p, id5 = F.max_pool2d(x53,kernel_size=2, stride=2,return_indices=True) # Stage 5d #這個(gè)是進(jìn)行最大值上采樣的函數(shù),其是根據(jù)id5來把值放到什么位置,其它位置沒有值的地方 補(bǔ)0 x5d = F.max_unpool2d(x5p, id5, kernel_size=2, stride=2) x53d = F.relu(self.bn53d(self.conv53d(x5d))) x52d = F.relu(self.bn52d(self.conv52d(x53d))) x51d = F.relu(self.bn51d(self.conv51d(x52d)))
測試?yán)樱?/strong>
#測試上采樣 m=nn.MaxPool2d((3,3),stride=(1,1),return_indices=True) upm=nn.MaxUnpool2d((3,3),stride=(1,1)) data4=torch.randn(1,1,3,3) output5,indices=m(data4) output6=upm(output5,indices) print('\ndata4:',data4, '\nmaxPool2d',output5, '\nindices:',indices, '\noutput6:',output6)
其輸出為:
data4: tensor([[[[ 2.3151, -1.0391, 0.1074], [ 1.9360, 0.2524, 2.3735], [-0.1151, 0.4684, -1.8800]]]]) maxPool2d tensor([[[[2.3735]]]]) indices: tensor([[[[5]]]]) output6: tensor([[[[0.0000, 0.0000, 0.0000], [0.0000, 0.0000, 2.3735], [0.0000, 0.0000, 0.0000]]]])
以上這篇pytorch進(jìn)行上采樣的種類實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
pycharm中連接mysql數(shù)據(jù)庫的步驟詳解
在進(jìn)行Python研發(fā)的時(shí)候,pycharm是一個(gè)很好的IDE,下面這篇文章主要給大家介紹了pycharm中連接mysql數(shù)據(jù)庫的步驟,文中通過圖文介紹的非常詳細(xì),對大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。2017-05-05代碼詳解django中數(shù)據(jù)庫設(shè)置
在本篇文章里小編給大家分享了關(guān)于django中數(shù)據(jù)庫設(shè)置的相關(guān)實(shí)例內(nèi)容,有興趣的朋友們跟著學(xué)習(xí)下。2019-01-01使用Python對網(wǎng)易云歌單數(shù)據(jù)分析及可視化
這篇文章主要介紹了使用Python對網(wǎng)易云歌單數(shù)據(jù)分析及可視化,本項(xiàng)目以數(shù)據(jù)采集、處理、分析及數(shù)據(jù)可視化為項(xiàng)目流程,需要的朋友可以參考下2023-03-03Python如何批量處理經(jīng)緯度數(shù)據(jù)并生成位置信息
這篇文章主要介紹了Python如何批量處理經(jīng)緯度數(shù)據(jù)并生成位置信息問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08opencv+python實(shí)現(xiàn)均值濾波
這篇文章主要為大家詳細(xì)介紹了opencv+python實(shí)現(xiàn)均值濾波,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02