最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytorch 權(quán)重weight 與 梯度grad 可視化操作

 更新時(shí)間:2021年06月05日 11:59:43   作者:rainbow_lucky0106  
這篇文章主要介紹了pytorch 權(quán)重weight 與 梯度grad 可視化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

pytorch 權(quán)重weight 與 梯度grad 可視化

查看特定layer的權(quán)重以及相應(yīng)的梯度信息

打印模型

觀察到model下面有module的key,module下面有features的key, features下面有(0)的key,這樣就可以直接打印出weight了

在pdb debug界面輸入p model.module.features[0].weight,就可以看到weight,輸入 p model.module.features[0].weight.grad 就可以查看梯度信息。

中間變量的梯度 : .register_hook

pytorch 為了節(jié)省顯存,在反向傳播的過程中只針對(duì)計(jì)算圖中的葉子結(jié)點(diǎn)(leaf variable)保留了梯度值(gradient)。但對(duì)于開發(fā)者來說,有時(shí)我們希望探測(cè)某些中間變量(intermediate variable) 的梯度來驗(yàn)證我們的實(shí)現(xiàn)是否有誤,這個(gè)過程就需要用到 tensor的register_hook接口

grads = {}
def save_grad(name):
    def hook(grad):
        grads[name] = grad
    return hook
x = torch.randn(1, requires_grad=True)
y = 3*x
z = y * y
# 為中間變量注冊(cè)梯度保存接口,存儲(chǔ)梯度時(shí)名字為 y。
y.register_hook(save_grad('y'))
# 反向傳播 
z.backward()
# 查看 y 的梯度值
print(grads['y'])

打印網(wǎng)絡(luò)回傳梯度

net.named_parameters()

parms.requires_grad 表示該參數(shù)是否可學(xué)習(xí),是不是frozen的;

parm.grad 打印該參數(shù)的梯度值。

net = your_network().cuda()
def train():
 ...
 outputs = net(inputs)
    loss = criterion(outputs, targets)
    loss.backward()
 for name, parms in net.named_parameters(): 
  print('-->name:', name, '-->grad_requirs:',parms.requires_grad, \
   ' -->grad_value:',parms.grad)

查看pytorch產(chǎn)生的梯度

[x.grad for x in self.optimizer.param_groups[0]['params']]

pytorch模型可視化及參數(shù)計(jì)算

我們?cè)谠O(shè)計(jì)完程序以后希望能對(duì)我們的模型進(jìn)行可視化,pytorch這里似乎沒有提供相應(yīng)的包直接進(jìn)行調(diào)用,下面把代碼貼出來:

import torch
from torch.autograd import Variable
import torch.nn as nn
from graphviz import Digraph
def make_dot(var, params=None):
   
    if params is not None:
        assert isinstance(params.values()[0], Variable)
        param_map = {id(v): k for k, v in params.items()}
 
    node_attr = dict(style='filled',
                     shape='box',
                     align='left',
                     fontsize='12',
                     ranksep='0.1',
                     height='0.2')
    dot = Digraph(node_attr=node_attr, graph_attr=dict(size="12,12"))
    seen = set()
 
    def size_to_str(size):
        return '('+(', ').join(['%d' % v for v in size])+')'
 
    def add_nodes(var):
        if var not in seen:
            if torch.is_tensor(var):
                dot.node(str(id(var)), size_to_str(var.size()), fillcolor='orange')
            elif hasattr(var, 'variable'):
                u = var.variable
                name = param_map[id(u)] if params is not None else ''
                node_name = '%s\n %s' % (name, size_to_str(u.size()))
                dot.node(str(id(var)), node_name, fillcolor='lightblue')
            else:
                dot.node(str(id(var)), str(type(var).__name__))
            seen.add(var)
            if hasattr(var, 'next_functions'):
                for u in var.next_functions:
                    if u[0] is not None:
                        dot.edge(str(id(u[0])), str(id(var)))
                        add_nodes(u[0])
            if hasattr(var, 'saved_tensors'):
                for t in var.saved_tensors:
                    dot.edge(str(id(t)), str(id(var)))
                    add_nodes(t)
    add_nodes(var.grad_fn)
    return dot

我們?cè)谖覀兊哪P拖旅嬷苯舆M(jìn)行調(diào)用就可以了,例如:

if __name__ == "__main__":
    model = DeepLab(backbone='resnet', output_stride=16)
    input = torch.rand(1, 3, 53, 53)
    output = model(input)
    g = make_dot(output)
    g.view()
    params = list(net.parameters())
    k = 0
    for i in params:
        l = 1
        print("該層的結(jié)構(gòu):" + str(list(i.size())))
        for j in i.size():
            l *= j
        print("該層參數(shù)和:" + str(l))
        k = k + l
    print("總參數(shù)數(shù)量和:" + str(k))

模型部分可視化結(jié)果:

參數(shù)計(jì)算:

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

相關(guān)文章

  • 一份python入門應(yīng)該看的學(xué)習(xí)資料

    一份python入門應(yīng)該看的學(xué)習(xí)資料

    關(guān)于python入門你應(yīng)該看這些資料,幫助你快速入門python,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • 詳解Python匿名函數(shù)(lambda函數(shù))

    詳解Python匿名函數(shù)(lambda函數(shù))

    這篇文章主要介紹了Python匿名函數(shù)(lambda函數(shù)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 基于Python模擬瀏覽器發(fā)送http請(qǐng)求

    基于Python模擬瀏覽器發(fā)送http請(qǐng)求

    這篇文章主要介紹了基于Python模擬瀏覽器發(fā)送http請(qǐng)求,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • python中元類用法實(shí)例

    python中元類用法實(shí)例

    這篇文章主要介紹了python中元類用法實(shí)例,對(duì)于學(xué)習(xí)Python有不錯(cuò)的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-10-10
  • 用pycharm開發(fā)django項(xiàng)目示例代碼

    用pycharm開發(fā)django項(xiàng)目示例代碼

    這篇文章主要介紹了用pycharm開發(fā)django項(xiàng)目示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • pytorch中tensor張量數(shù)據(jù)類型的轉(zhuǎn)化方式

    pytorch中tensor張量數(shù)據(jù)類型的轉(zhuǎn)化方式

    今天小編就為大家分享一篇pytorch中tensor張量數(shù)據(jù)類型的轉(zhuǎn)化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python爬蟲scrapy框架的梨視頻案例解析

    python爬蟲scrapy框架的梨視頻案例解析

    這篇文章主要介紹了python爬蟲scrapy框架的梨視頻案例解析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • python實(shí)現(xiàn)對(duì)象列表根據(jù)某個(gè)屬性排序的方法詳解

    python實(shí)現(xiàn)對(duì)象列表根據(jù)某個(gè)屬性排序的方法詳解

    這篇文章主要介紹了python實(shí)現(xiàn)對(duì)象列表根據(jù)某個(gè)屬性排序的方法,結(jié)合具體實(shí)例形式詳細(xì)分析了Python對(duì)象列表遍歷、排序的兩種常見操作技巧,需要的朋友可以參考下
    2019-06-06
  • Python實(shí)現(xiàn)自動(dòng)發(fā)送測(cè)試報(bào)告郵件的示例代碼

    Python實(shí)現(xiàn)自動(dòng)發(fā)送測(cè)試報(bào)告郵件的示例代碼

    SMTP也就是簡(jiǎn)單郵件傳輸協(xié)議,是一種提供可靠且有效電子郵件傳輸?shù)膮f(xié)議,python的smtplib模塊就提供了一種很方便的途徑發(fā)送電子郵件,它對(duì)smtp協(xié)議進(jìn)行了簡(jiǎn)單的封裝,下面就來和大家簡(jiǎn)單聊聊吧
    2023-07-07
  • Python中使用Beautiful Soup庫的超詳細(xì)教程

    Python中使用Beautiful Soup庫的超詳細(xì)教程

    這篇文章主要介紹了Python中使用Beautiful Soup庫的超詳細(xì)教程,示例代碼基于Python2.x版本,極力推薦!需要的朋友可以參考下
    2015-04-04

最新評(píng)論

登封市| 梨树县| 兴隆县| 垣曲县| 曲麻莱县| 阿鲁科尔沁旗| 松原市| 偃师市| 周宁县| 方城县| 鹤岗市| 搜索| 靖江市| 绥芬河市| 公安县| 全椒县| 防城港市| 乐平市| 中山市| 乐陵市| 香格里拉县| 贵阳市| 漳州市| 离岛区| 东明县| 都安| 荆门市| 收藏| 新余市| 大洼县| 福泉市| 北票市| 田阳县| 开化县| 三穗县| 滨海县| 盐源县| 广西| 辽阳县| 郁南县| 宽甸|