Pytorch 抽取vgg各層并進行定制化處理的方法
工作中有時候需要對vgg進行定制化處理,比如有些時候需要借助于vgg的層結(jié)構(gòu),但是需要使用的是2 channels輸入,等等需求,這時候可以使用vgg的原始結(jié)構(gòu)用class重寫一遍,但是這樣的方式比較慢,并且容易出錯,下面給出一種比較簡單的方式
def define_vgg(vgg,input_channels,endlayer,use_maxpool=False):
vgg_ad = copy.deepcopy(vgg)
model = nn.Sequential()
i = 0
for layer in list(vgg_ad.features):
if i > endlayer:
break
if isinstance(layer, nn.Conv2d) and i is 0:
name = "conv_" + str(i)
layer = nn.Conv2d(input_channels,
layer.out_channels,
layer.kernel_size,
stride = layer.stride,
padding=layer.padding)
model.add_module(name, layer)
if isinstance(layer, nn.Conv2d):
name = "conv_" + str(i)
model.add_module(name, layer)
if isinstance(layer, nn.ReLU):
name = "leakyrelu_" + str(i)
layer = nn.LeakyReLU(inplace=True)
model.add_module(name, layer)
if isinstance(layer, nn.MaxPool2d):
name = "pool_" + str(i)
if use_maxpool:
model.add_module(name, layer)
else:
avgpool = nn.AvgPool2d(kernel_size=layer.kernel_size, stride=layer.stride, padding=layer.padding)
model.add_module(name, avgpool)
i += 1
return model
函數(shù)輸入項中的vgg 是直接使用的import torchvision.models.vgg16 傳入的是vgg16 非預(yù)訓(xùn)練版本。end_layer 是需要提取的層數(shù),這里使用了vgg.features 是指僅僅在vgg.features 上進行層的提??;也可以根據(jù)定制在classifier上進行提取。
下面是我的一個提取前7層的示例,可以使用pyCharm evaluate 上面函數(shù)返回的model,可以看到這個示例的情況,這里我的定制條件是輸入通道為2 ,需要提取前7層,并且將ReLu更換為LeakyRelu。
Sequential( (conv_0): Conv2d(2, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (leakyrelu_1): LeakyReLU(negative_slope=0.01, inplace) (conv_2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (leakyrelu_3): LeakyReLU(negative_slope=0.01, inplace) (pool_4): AvgPool2d(kernel_size=2, stride=2, padding=0) (conv_5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (leakyrelu_6): LeakyReLU(negative_slope=0.01, inplace) (conv_7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) )
以上這篇Pytorch 抽取vgg各層并進行定制化處理的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python3.7安裝keras和TensorFlow的教程圖解
這篇文章主要介紹了Python3.7安裝keras和TensorFlow經(jīng)驗,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10
Python自動錄入ERP系統(tǒng)數(shù)據(jù)
這篇文章主要介紹了Python如何自動錄入ERP系統(tǒng)數(shù)據(jù),用Python解決Excel問題的最佳方法,文章中有詳細的代碼示例,需要的朋友可以參考閱讀2023-04-04
numpy ndarray 按條件篩選數(shù)組,關(guān)聯(lián)篩選的例子
今天小編就為大家分享一篇numpy ndarray 按條件篩選數(shù)組,關(guān)聯(lián)篩選的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
BeautifulSoup獲取指定class樣式的div的實現(xiàn)
這篇文章主要介紹了BeautifulSoup獲取指定class樣式的div的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12
python 利用pyttsx3文字轉(zhuǎn)語音過程詳解
這篇文章主要介紹了python 利用pyttsx3文字轉(zhuǎn)語音過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-09-09
pytorch如何利用ResNet18進行手寫數(shù)字識別
這篇文章主要介紹了pytorch如何利用ResNet18進行手寫數(shù)字識別問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02

