亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > Pytorch模型中的parameter與buffer用法

Pytorch模型中的parameter與buffer用法

熱門標簽:小蘇云呼電話機器人 地圖標注面積 朝陽手機外呼系統(tǒng) 佛山400電話辦理 儋州電話機器人 所得系統(tǒng)電梯怎樣主板設(shè)置外呼 市場上的電銷機器人 北瀚ai電銷機器人官網(wǎng)手機版 北京電銷外呼系統(tǒng)加盟

Parameter 和 buffer

If you have parameters in your model, which should be saved and restored in the state_dict, but not trained by the optimizer, you should register them as buffers.Buffers won't be returned in model.parameters(), so that the optimizer won't have a change to update them.

模型中需要保存下來的參數(shù)包括兩種

一種是反向傳播需要被optimizer更新的,稱之為 parameter

一種是反向傳播不需要被optimizer更新,稱之為 buffer

第一種參數(shù)我們可以通過 model.parameters() 返回;第二種參數(shù)我們可以通過 model.buffers() 返回。因為我們的模型保存的是 state_dict 返回的 OrderDict,所以這兩種參數(shù)不僅要滿足是否需要被更新的要求,還需要被保存到OrderDict。

那么現(xiàn)在的問題是這兩種參數(shù)如何創(chuàng)建呢,創(chuàng)建好了如何保存到OrderDict呢?

第一種參數(shù)有兩種方式

我們可以直接將模型的成員變量(http://self.xxx) 通過nn.Parameter() 創(chuàng)建,會自動注冊到parameters中,可以通過model.parameters() 返回,并且這樣創(chuàng)建的參數(shù)會自動保存到OrderDict中去;

通過nn.Parameter() 創(chuàng)建普通Parameter對象,不作為模型的成員變量,然后將Parameter對象通過register_parameter()進行注冊,可以通model.parameters() 返回,注冊后的參數(shù)也會自動保存到OrderDict中去;

第二種參數(shù)我們需要創(chuàng)建tensor

然后將tensor通過register_buffer()進行注冊,可以通model.buffers() 返回,注冊完后參數(shù)也會自動保存到OrderDict中去。

Pytorch中Module,Parameter和Buffer區(qū)別

下文都將torch.nn簡寫成nn

Module: 就是我們常用的torch.nn.Module類,你定義的所有網(wǎng)絡(luò)結(jié)構(gòu)都必須繼承這個類。

Buffer: buffer和parameter相對,就是指那些不需要參與反向傳播的參數(shù)

示例如下:

class MyModel(nn.Module):
 def __init__(self):
  super(MyModel, self).__init__()
  self.my_tensor = torch.randn(1) # 參數(shù)直接作為模型類成員變量
  self.register_buffer('my_buffer', torch.randn(1)) # 參數(shù)注冊為 buffer
  self.my_param = nn.Parameter(torch.randn(1))
 def forward(self, x):
  return x 

model = MyModel()
print(model.state_dict())
>>>OrderedDict([('my_param', tensor([1.2357])), ('my_buffer', tensor([-0.9982]))])
Parameter: 是nn.parameter.Paramter,也就是組成Module的參數(shù)。例如一個nn.Linear通常由weight和bias參數(shù)組成。它的特點是默認requires_grad=True,也就是說訓(xùn)練過程中需要反向傳播的,就需要使用這個
import torch.nn as nn
fc = nn.Linear(2,2)

# 讀取參數(shù)的方式一
fc._parameters
>>> OrderedDict([('weight', Parameter containing:
              tensor([[0.4142, 0.0424],
                      [0.3940, 0.0796]], requires_grad=True)),
             ('bias', Parameter containing:
              tensor([-0.2885,  0.5825], requires_grad=True))])
     
# 讀取參數(shù)的方式二(推薦這種)
for n, p in fc.named_parameters():
 print(n,p)
>>>weight Parameter containing:
tensor([[0.4142, 0.0424],
        [0.3940, 0.0796]], requires_grad=True)
bias Parameter containing:
tensor([-0.2885,  0.5825], requires_grad=True)

# 讀取參數(shù)的方式三
for p in fc.parameters():
 print(p)
>>>Parameter containing:
tensor([[0.4142, 0.0424],
        [0.3940, 0.0796]], requires_grad=True)
Parameter containing:
tensor([-0.2885,  0.5825], requires_grad=True)

通過上面的例子可以看到,nn.parameter.Paramter的requires_grad屬性值默認為True。另外上面例子給出了三種讀取parameter的方法,推薦使用后面兩種,因為是以迭代生成器的方式來讀取,第一種方式是一股腦的把參數(shù)全丟給你,要是模型很大,估計你的電腦會吃不消。

另外需要介紹的是_parameters是nn.Module在__init__()函數(shù)中就定義了的一個OrderDict類,這個可以通過看下面給出的部分源碼看到,可以看到還初始化了很多其他東西,其實原理都大同小異,你理解了這個之后,其他的也是同樣的道理。

class Module(object):
 ...
    def __init__(self):
        self._backend = thnn_backend
        self._parameters = OrderedDict()
        self._buffers = OrderedDict()
        self._backward_hooks = OrderedDict()
        self._forward_hooks = OrderedDict()
        self._forward_pre_hooks = OrderedDict()
        self._state_dict_hooks = OrderedDict()
        self._load_state_dict_pre_hooks = OrderedDict()
        self._modules = OrderedDict()
        self.training = True

每當我們給一個成員變量定義一個nn.parameter.Paramter的時候,都會自動注冊到_parameters,具體的步驟如下:

import torch.nn as nn
class MyModel(nn.Module):
 def __init__(self):
  super(MyModel, self).__init__()
  # 下面兩種定義方式均可
  self.p1 = nn.paramter.Paramter(torch.tensor(1.0))
  print(self._parameters)
  self.p2 = nn.Paramter(torch.tensor(2.0))
  print(self._parameters)

首先運行super(MyModel, self).__init__(),這樣MyModel就初始化了_paramters等一系列的OrderDict,此時所有變量還都是空的。

self.p1 = nn.paramter.Paramter(torch.tensor(1.0)): 這行代碼會觸發(fā)nn.Module預(yù)定義好的__setattr__函數(shù),該函數(shù)部分源碼如下:

def __setattr__(self, name, value):
 ...
 params = self.__dict__.get('_parameters')
 if isinstance(value, Parameter):
  if params is None:
   raise AttributeError(
    "cannot assign parameters before Module.__init__() call")
  remove_from(self.__dict__, self._buffers, self._modules)
  self.register_parameter(name, value)
 ...

__setattr__函數(shù)作用簡單理解就是判斷你定義的參數(shù)是否正確,如果正確就繼續(xù)調(diào)用register_parameter函數(shù)進行注冊,這個函數(shù)簡單概括就是做了下面這件事

def register_parameter(self,name,param):
 ...
 self._parameters[name]=param

下面我們實例化這個模型看結(jié)果怎樣

model = MyModel()
>>>OrderedDict([('p1', Parameter containing:
tensor(1., requires_grad=True))])
OrderedDict([('p1', Parameter containing:
tensor(1., requires_grad=True)), ('p2', Parameter containing:
tensor(2., requires_grad=True))])

結(jié)果和上面分析的一致。

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

您可能感興趣的文章:
  • PyTorch里面的torch.nn.Parameter()詳解
  • Pytorch之parameters的使用
  • pytorch 計算Parameter和FLOP的操作

標簽:金融催收 定西 寧夏 酒泉 龍巖 商丘 江蘇 云南

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Pytorch模型中的parameter與buffer用法》,本文關(guān)鍵詞  Pytorch,模型,中的,parameter,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Pytorch模型中的parameter與buffer用法》相關(guān)的同類信息!
  • 本頁收集關(guān)于Pytorch模型中的parameter與buffer用法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    日日日夜夜操| 欧美激情中文字幕一区二区| 精品国产一区二区三区精东影业 | 欧美大片毛片aaa免费看| 精品国产一区二区三区久 | 日韩一级黄色| 欧美激情一区二区三区视频高清| 免费一级生活片| 韩国毛片免费大片| 99色视频在线观看| 日本在线播放一区| 国产欧美精品| 国产网站免费在线观看| 精品久久久久久中文字幕一区 | 免费一级片在线观看| 青草国产在线| 精品久久久久久中文字幕一区 | 国产高清视频免费观看| 黄视频网站在线免费观看| 一a一级片| 国产激情一区二区三区| 久久国产精品永久免费网站| 欧美日本二区| 久草免费资源| 国产一级生活片| 黄视频网站免费| 九九热国产视频| 国产成人啪精品| 久久国产精品只做精品| 亚洲www美色| 国产麻豆精品| 尤物视频网站在线| 亚州视频一区二区| 毛片电影网| 精品视频在线观看视频免费视频| 精品久久久久久综合网| 亚洲 激情| 国产一区二区精品久久91| 国产福利免费视频| 日本伦理片网站| 日韩专区第一页| 久草免费在线观看| 精品久久久久久中文字幕2017| 欧美激情在线精品video| 精品国产三级a∨在线观看| 黄视频网站在线免费观看| 九九久久99| a级毛片免费观看网站| 91麻豆高清国产在线播放| 欧美电影免费| 欧美a级片视频| 欧美另类videosbestsex视频| 99久久精品国产高清一区二区| 久久精品人人做人人爽97| 精品国产香蕉伊思人在线又爽又黄| 沈樵在线观看福利| 二级片在线观看| 日韩在线观看视频网站| 亚洲www美色| 国产91素人搭讪系列天堂| 午夜家庭影院| 国产网站免费观看| 国产麻豆精品视频| 国产伦久视频免费观看 视频| 久久精品人人做人人爽97| 欧美a免费| 国产91视频网| 欧美大片一区| 国产激情一区二区三区| 午夜在线观看视频免费 成人| 国产韩国精品一区二区三区| 亚欧乱色一区二区三区| a级黄色毛片免费播放视频| 青青久久精品| 亚洲 国产精品 日韩| 日韩免费在线视频| 免费国产在线视频| 精品视频在线观看免费| 国产成+人+综合+亚洲不卡| 国产伦久视频免费观看 视频| 亚洲天堂免费观看| 精品视频在线观看免费| 成人高清视频在线观看| 国产福利免费观看| 久久99中文字幕| 亚洲www美色| 91麻豆精品国产片在线观看| 国产高清视频免费| 国产伦久视频免费观看 视频| 国产网站免费| 国产91精品露脸国语对白| 可以免费看污视频的网站| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 麻豆网站在线看| 精品视频在线看| 成人影院久久久久久影院| 国产伦精品一区三区视频| 日韩中文字幕在线播放| 999久久久免费精品国产牛牛| 日韩av东京社区男人的天堂| 国产美女在线一区二区三区| 韩国三级香港三级日本三级| 可以免费看毛片的网站| 国产伦久视频免费观看视频| 四虎影视库| 一本高清在线| 中文字幕97| 日韩免费片| 国产一区二区精品久久91| 黄色免费三级| 国产视频一区在线| 欧美大片毛片aaa免费看| 国产成人欧美一区二区三区的| 天天做人人爱夜夜爽2020毛片| 国产一级生活片| 欧美一级视频免费观看| 亚洲天堂在线播放| 久久国产精品只做精品| 欧美电影免费看大全| 日本特黄一级| 久久精品店| 九九久久99| 国产精品免费精品自在线观看| 精品国产一区二区三区免费| 九九精品久久| 国产美女在线一区二区三区| 国产麻豆精品| 亚洲 国产精品 日韩| 日韩在线观看视频网站| 亚洲精品永久一区| 亚洲天堂免费| 黄色短视频网站| 成人免费观看的视频黄页| a级黄色毛片免费播放视频| 欧美另类videosbestsex高清| 亚洲第一色在线| 欧美激情一区二区三区视频高清| 久久福利影视| 国产成人精品综合在线| 一a一级片| 欧美大片毛片aaa免费看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产亚洲精品aaa大片| 黄视频网站在线看| 日韩欧美一二三区| 可以免费看毛片的网站| 国产一区二区精品久| 日本特黄特黄aaaaa大片| 黄色免费网站在线| 成人av在线播放| 久久精品人人做人人爽97| 精品视频一区二区| 日韩专区亚洲综合久久| 九九精品在线播放| 亚欧乱色一区二区三区| 青青久久精品| 九九精品久久| 韩国三级视频网站| 日韩免费片| 日韩一级黄色| 久久国产精品自线拍免费| 欧美激情一区二区三区在线播放| 久久国产精品自线拍免费| 香蕉视频久久| 欧美激情一区二区三区在线播放| 免费一级片在线观看| 欧美激情一区二区三区视频高清| 黄色福利片| 日本特黄特色aaa大片免费| 黄视频网站免费| 日韩av成人| 欧美电影免费| 亚洲 男人 天堂| 日韩中文字幕在线亚洲一区| 国产麻豆精品hdvideoss| 亚洲第一页乱| 国产欧美精品| 黄视频网站免费观看| 欧美电影免费看大全| 国产不卡精品一区二区三区| 日本伦理片网站| 99久久网站| 美女免费精品高清毛片在线视| 黄色免费网站在线| 韩国毛片 免费| 99久久精品国产麻豆| 精品视频一区二区| 青青久久网| 精品美女| 久久国产精品自由自在| 欧美α片无限看在线观看免费| 免费的黄色小视频| 青青青草视频在线观看| 色综合久久天天综合| 国产激情一区二区三区| 日本乱中文字幕系列| 久久99欧美| 午夜激情视频在线播放| 可以免费看毛片的网站| 二级特黄绝大片免费视频大片|