好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > pytorch 權重weight 與 梯度grad 可視化操作

pytorch 權重weight 與 梯度grad 可視化操作

熱門標簽:打電話機器人營銷 騰訊地圖標注沒法顯示 ai電銷機器人的優勢 商家地圖標注海報 海外網吧地圖標注注冊 南陽打電話機器人 聊城語音外呼系統 孝感營銷電話機器人效果怎么樣 地圖標注自己和別人標注區別

pytorch 權重weight 與 梯度grad 可視化

查看特定layer的權重以及相應的梯度信息

打印模型

觀察到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 為了節省顯存,在反向傳播的過程中只針對計算圖中的葉子結點(leaf variable)保留了梯度值(gradient)。但對于開發者來說,有時我們希望探測某些中間變量(intermediate variable) 的梯度來驗證我們的實現是否有誤,這個過程就需要用到 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
# 為中間變量注冊梯度保存接口,存儲梯度時名字為 y。
y.register_hook(save_grad('y'))
# 反向傳播 
z.backward()
# 查看 y 的梯度值
print(grads['y'])

打印網絡回傳梯度

net.named_parameters()

parms.requires_grad 表示該參數是否可學習,是不是frozen的;

parm.grad 打印該參數的梯度值。

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產生的梯度

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

pytorch模型可視化及參數計算

我們在設計完程序以后希望能對我們的模型進行可視化,pytorch這里似乎沒有提供相應的包直接進行調用,下面把代碼貼出來:

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

我們在我們的模型下面直接進行調用就可以了,例如:

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("該層的結構:" + str(list(i.size())))
        for j in i.size():
            l *= j
        print("該層參數和:" + str(l))
        k = k + l
    print("總參數數量和:" + str(k))

模型部分可視化結果:

參數計算:

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

您可能感興趣的文章:
  • 可視化pytorch 模型中不同BN層的running mean曲線實例
  • pytorch使用tensorboardX進行loss可視化實例
  • pytorch對梯度進行可視化進行梯度檢查教程
  • pytorch實現mnist數據集的圖像可視化及保存
  • 使用pytorch實現可視化中間層的結果
  • pytorch 可視化feature map的示例代碼
  • pytorch 模型可視化的例子
  • Pytorch可視化的幾種實現方法

標簽:南寧 聊城 撫州 揚州 六盤水 迪慶 牡丹江 楊凌

巨人網絡通訊聲明:本文標題《pytorch 權重weight 與 梯度grad 可視化操作》,本文關鍵詞  pytorch,權重,weight,與,梯度,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pytorch 權重weight 與 梯度grad 可視化操作》相關的同類信息!
  • 本頁收集關于pytorch 權重weight 與 梯度grad 可視化操作的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 影音先锋888xy资源站| 美女跪趴式翘臀被c动态图| 12—13女人A片毛片免费| 日本口工无翼彩全彩漫画更新时间| 攻宠清冷受H1V1| 我把武警摸硬了| 美女脱内衣禁止18以下看免费下载| 91久久久久精品影院桃乃木| 男女高潮激烈久久久| 暖暖免费在线观看韩国| 一级爱一级做a性视频| 性欧美videofree高清极| 中国一级特黄大片视频播放| 欧美成人在线观看| 国产91视频网| 主人请狠狠打烂贱奴的屁股视频| 美女尿尿偷拍视频| 丰满富婆一级A片外国电影| 巜部长的人妻厨房激战5| 嗯哼~我受不了快点进来吧| 毛片毛片毛片| 日本人强jizzjizz| 娇妻帮邻居许老勃起| 国产极品白丝玉足喷白浆高潮视频| 荡女淫春k8经典放荡的情欲| 欧美一区二区三区在线观看| 麻豆国产尤物AV尤物在线观看 | 国产极品美女无套内射-| 巨大挺进她的花茎| 99久久夜色精品国产亚洲96| 极乐鸟漫画大全免费观看| 欧洲黄色毛片| 高冷总裁双性(h)| 久久婷婷国产一区二区三区| 亚丝娜被?吸乳羞羞| 久欠精品国国产99国产精2021的功能介绍| 国产kk在线视频网址| 老师和学生做一级毛片| 亚洲欧美在线观看一区二区| 欧美大片一区二区三区| 国产伦孑沙发午休精品_第1集 |