這篇文章給大家分享的是有關(guān)pytorch如何獲取層權(quán)重,對特定層注入hook, 提取中間層輸出的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計制作、做網(wǎng)站與策劃設(shè)計,肅州網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:肅州等地區(qū)。肅州做網(wǎng)站價格咨詢:028-86922220如下所示:
#獲取模型權(quán)重 for k, v in model_2.state_dict().iteritems(): print("Layer {}".format(k)) print(v)
#獲取模型權(quán)重 for layer in model_2.modules(): if isinstance(layer, nn.Linear): print(layer.weight)
#將一個模型權(quán)重載入另一個模型 model = VGG(make_layers(cfg['E']), **kwargs) if pretrained: load = torch.load('/home/huangqk/.torch/models/vgg19-dcbb9e9d.pth') load_state = {k: v for k, v in load.items() if k not in ['classifier.0.weight', 'classifier.0.bias', 'classifier.3.weight', 'classifier.3.bias', 'classifier.6.weight', 'classifier.6.bias']} model_state = model.state_dict() model_state.update(load_state) model.load_state_dict(model_state) return model
# 對特定層注入hook def hook_layers(model): def hook_function(module, inputs, outputs): recreate_image(inputs[0]) print(model.features._modules) first_layer = list(model.features._modules.items())[0][1] first_layer.register_forward_hook(hook_function)
#獲取層 x = someinput for l in vgg.features.modules(): x = l(x) modulelist = list(vgg.features.modules()) for l in modulelist[:5]: x = l(x) keep = x for l in modulelist[5:]: x = l(x)
# 提取vgg模型的中間層輸出 # coding:utf8 import torch import torch.nn as nn from torchvision.models import vgg16 from collections import namedtuple class Vgg16(torch.nn.Module): def __init__(self): super(Vgg16, self).__init__() features = list(vgg16(pretrained=True).features)[:23] # features的第3,8,15,22層分別是: relu1_2,relu2_2,relu3_3,relu4_3 self.features = nn.ModuleList(features).eval() def forward(self, x): results = [] for ii, model in enumerate(self.features): x = model(x) if ii in {3, 8, 15, 22}: results.append(x) vgg_outputs = namedtuple("VggOutputs", ['relu1_2', 'relu2_2', 'relu3_3', 'relu4_3']) return vgg_outputs(*results)pytorch的優(yōu)點
1.PyTorch是相當(dāng)簡潔且高效快速的框架;2.設(shè)計追求最少的封裝;3.設(shè)計符合人類思維,它讓用戶盡可能地專注于實現(xiàn)自己的想法;4.與google的Tensorflow類似,F(xiàn)AIR的支持足以確保PyTorch獲得持續(xù)的開發(fā)更新;5.PyTorch作者親自維護的論壇 供用戶交流和求教問題6.入門簡單
感謝各位的閱讀!關(guān)于“pytorch如何獲取層權(quán)重,對特定層注入hook, 提取中間層輸出”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
文章名稱:pytorch如何獲取層權(quán)重,對特定層注入hook,提取中間層輸出-創(chuàng)新互聯(lián)
文章分享:http://jinyejixie.com/article22/jgscc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、網(wǎng)站內(nèi)鏈、電子商務(wù)、網(wǎng)站導(dǎo)航、建站公司、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容