pytorch模型结构可视化以及注意的一些问题

1.安装pytorchviz

conda install pytorchviz
  1. 将安装好后的路径 放入系统的环境变量
D:\Anaconda\Library\bin\graphviz

3.重启IDE,必须重启
4.加载

import torch
from torchvision.models import resnet50
from torchviz import make_dot
model = resnet50()
print(model)
'''
注释这一行是为了将输入也添加到网络中。
'''
# g=make_dot(model(X.requires_grad_(True)),params=dict(list(model.named_parameters())+ [('x', X)]))
g=make_dot(model(torch.rand(1,3,255,255)),params=dict(model.named_parameters()))
g.view()

程序将以pdf的形式展示出来,蓝色并不是反向传播需要更新的参数(下面会给出证明),黑色的为网络结构,蓝色的为需要更新的梯度:
在这里插入图片描述
我将fc层冻结(或者是所有层都冻结)后,图中的蓝色还是为蓝色,也就是说蓝色的代表的是权重:

import torch
from torchvision.models import resnet50
from torchviz import make_dot
model = resnet50()
print(model)
X =torch.rand(1,3,255,255)
# g=make_dot(model(X.requires_grad_(True)),params=dict(list(model.named_parameters())+ [('x', X)]))
g=make_dot(model(torch.rand(1,3,255,255)),params=dict(model.named_parameters()))
count=0
for name,params in model.named_parameters():
    # params.requires_grad = False
    if name.split('.')[0]=='fc':
        count+=1
        params.requires_grad = False
print(count)
for name,params in model.named_parameters():
    if name.split('.')[0]=='fc':
        count+=1
        print(params.requires_grad)
g.view()

这是冻结完之后的图,一模一样:
在这里插入图片描述

扩展: model.children()与 model.named_parameters() 与model.parameters()与model.modules() 的区别与联系
```
model.children()是按照子模块打印,比如可以将一个sequential序列打印,但是改变不了层的梯度
model.named_parameters()  打印层的名字和梯度,梯度值,可以修改梯度
```

```
for name, parms in model.named_parameters():	
	print('-->name:', name, '-->grad_requirs:',parms.requires_grad, ' -->grad_value:',parms.grad)
```

···
model.parameters() 除了名字不能打印,梯度和梯度值可以打印,可以修改梯度
model.modules() 也是打印层的名字,不可以修改梯度,除此之外,这个人的总结很不错:https://www.jianshu.com/p/a4c745b6ea9b

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值