pytorch:可视化模型结构

1、首先要能print出你的模型结构print(model)

2、将你的model模型结构保存成.onnx的文件

3、使用pytorch中的netron方法

# 针对有网络模型,但还没有训练保存 .onxx 文件的情况
import netron
import torch.onnx
from torch.autograd import Variable
from torchvision.models import resnet18  # 以 resnet18 为例

myNet = resnet18()  # 实例化 resnet18
x = torch.randn(16, 3, 40, 40)  # 随机生成一个输入
modelData = "./demo.onnx"  #  onnx 文件
torch.onnx.export(myNet, x, modelData)  # 将 pytorch 模型以 onnx 格式导出并保存
netron.start(modelData)  # 输出网络结构

结果如下图所示:

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyTorch提供了一个叫做`torchsummary`的工具,可以帮助我们可视化网络结构,使用这个工具可以非常方便地查看模型结构、参数量等信息。 首先,需要安装`torchsummary`: ``` pip install torchsummary ``` 然后,我们可以使用以下代码来可视化网络结构: ```python import torch import torch.nn as nn from torchsummary import summary # 定义网络结构 class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1) self.conv2 = nn.Conv2d(64, 128, kernel_size=3, stride=1, padding=1) self.conv3 = nn.Conv2d(128, 256, kernel_size=3, stride=1, padding=1) self.fc1 = nn.Linear(256 * 4 * 4, 1024) self.fc2 = nn.Linear(1024, 10) self.relu = nn.ReLU() self.pool = nn.MaxPool2d(kernel_size=2, stride=2) def forward(self, x): x = self.relu(self.conv1(x)) x = self.pool(x) x = self.relu(self.conv2(x)) x = self.pool(x) x = self.relu(self.conv3(x)) x = self.pool(x) x = x.view(-1, 256 * 4 * 4) x = self.relu(self.fc1(x)) x = self.fc2(x) return x # 实例化网络 net = Net() # 使用summary查看网络结构 summary(net, (3, 32, 32)) ``` 这里我们定义了一个简单的CNN网络结构,并使用`torchsummary`的`summary`函数来可视化网络结构。函数的第一个参数是我们定义的网络,第二个参数是输入数据的维度。 运行程序后,控制台会输出网络结构,包括每一层的名称、输出形状和参数数量等信息,如下所示: ``` ---------------------------------------------------------------- Layer (type) Output Shape Param # ================================================================ Conv2d-1 [-1, 64, 32, 32] 1,792 ReLU-2 [-1, 64, 32, 32] 0 MaxPool2d-3 [-1, 64, 16, 16] 0 Conv2d-4 [-1, 128, 16, 16] 73,856 ReLU-5 [-1, 128, 16, 16] 0 MaxPool2d-6 [-1, 128, 8, 8] 0 Conv2d-7 [-1, 256, 8, 8] 295,168 ReLU-8 [-1, 256, 8, 8] 0 MaxPool2d-9 [-1, 256, 4, 4] 0 Linear-10 [-1, 1024] 4,194,304 ReLU-11 [-1, 1024] 0 Linear-12 [-1, 10] 10,250 ================================================================ Total params: 4,575,370 Trainable params: 4,575,370 Non-trainable params: 0 ---------------------------------------------------------------- Input size (MB): 0.01 Forward/backward pass size (MB): 0.79 Params size (MB): 17.45 Estimated Total Size (MB): 18.25 ---------------------------------------------------------------- ``` 可以看到,我们的网络结构被清晰地展示出来,每一层的输出形状和参数数量也一目了然,方便我们进行模型设计和调试。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值