神经网络结构常见可视化工具汇总及效果演示


参考视频: 11款神经网络科研绘图可视化工具

各种训练框架自带的可视化工具

pytorch自带pytorchviz

https://github.com/szagoruyko/pytorchviz

import torch
from torch import nn
from torchvision import models
from torchviz import make_dot, make_dot_from_trace

device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
print('device',device)

简易神经网络可视化

##构建模型 
model = nn.Sequential()
model.add_module('w0', nn.Linear(8, 16))
model.add_module('tanh', nn.Tanh())
model.add_module('w1', nn.Linear(16, 1))
##可视化
x = torch.randn(1, 8)
make_dot(model(x), params=dict(model.named_parameters()))

在这里插入图片描述

卷积神经网络可视化

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        
        self.conv_layers = nn.Sequential(
            nn.Conv2d(1, 10, kernel_size=5),#图片的大小:28-5=23
            nn.MaxPool2d(2),#图片的大小:23/2=12
            nn.ReLU(),
            nn.Conv2d(10, 20, kernel_size=5),#图片的大小:12-5=7
            nn.Dropout(),
            nn.MaxPool2d(2),#图片的大小:7/2=4
            nn.ReLU(),
        )
        self.fc_layers = nn.Sequential(
            nn.Linear(320, 50),
            nn.ReLU(),
            nn.Dropout(),
            nn.Linear(50, 10),
            nn.Softmax(dim=1)
        )
    def forward(self, x):
        x = self.conv_layers(x)#1*20*4*4
        x = x.view(-1, 320)#1*320
        x = self.fc_layers(x)#1*10
        return x
    
model = Net()
x = torch.randn(1, 1, 28, 28).to(device)
make_dot(model(x), params=dict(model.named_parameters()))

LSTM可视化

lstm_cell = nn.LSTMCell(128, 128)
x = torch.randn(1, 128)
make_dot(lstm_cell(x), params=dict(lstm_cell.named_parameters()))

对Resnet18进行可视化

model = models.resnet18(pretrained=True)
model = model.eval().to(device)
x = torch.randn(1, 3, 256, 256).to(device)
make_dot(model(x), params=dict(model.named_parameters()))

对自己训练的模型进行可视化

model = torch.load('checkpoints/fruit30_pytorch_20230123.pth')#自己训练的模型
model = model.eval().to(device)
x = torch.randn(1, 3, 256, 256).to(device)
make_dot(model(x), params=dict(model.named_parameters()))

Pytorch模型转ONNX模型

x = torch.randn(1, 3, 256, 256).to(device)

with torch.no_grad():
    torch.onnx.export(
        model,                  # 要转换的模型
        x,                      # 模型的任意一组输入
        'resnet18.onnx',        # 导出的 ONNX 文件名
        opset_version=11,       # ONNX 算子集版本
        input_names=['input'],  # 输入 Tensor 的名称(自己起名字)
        output_names=['output'] # 输出 Tensor 的名称(自己起名字)
    ) 

验证onnx模型导出成功

import onnx

# 读取 ONNX 模型
onnx_model = onnx.load('resnet18.onnx')

# 检查模型格式是否正确
onnx.checker.check_model(onnx_model)

print('无报错,onnx模型载入成功')

keras自带visualkeras

https://github.com/paulgavrikov/visualkeras
在这里插入图片描述

TensorFlow自带TensorBoard

https://towardsdatascience.com/tensorboard-visualizing-learning-ad1b6667585

在这里插入图片描述

其它画图工具

NN-SVG:FCNN style、LeNet style、AlexNet style

http://alexlenail.me/NN-SVG/index.html

在这里插入图片描述

PlotNeuralNet:使用Latex编写

https://github.com/HarisIqbal88/PlotNeuralNet

Netron:多种格式的网络模型文件可视化

https://netron.app/

在这里插入图片描述
在这里插入图片描述

ZETANE:可视化特征图(热力图)

https://zetane.com/

在这里插入图片描述

Tensorspace.js:浏览器中使用

https://tensorspace.org/
在这里插入图片描述
在这里插入图片描述

GRAPHCORE:像扫描大脑CT一样可视化神经网络

把神经网络的当成一个图,对图进行降维和聚类之后的效果
https://www.graphcore.ai/posts/what-does-machine-learning-look-like

在这里插入图片描述

nn_vis:3D交互式

https://github.com/julrog/nn_vis
在这里插入图片描述

PowerPoint

链接:https://pan.baidu.com/s/1Ih6i3bVhwA_wCxmjmCgLhA
提取码:cae2
在这里插入图片描述

ProcessOn:有很多现成的模板

https://www.processon.com/
在这里插入图片描述

总结

本文主要介绍了11个神经网络结构可视化工具和它们的可视化效果展示,包括:

  • pytorch自带pytorchviz
  • keras自带graphviz、visualkeras
  • TensorFlow自带TensorBoard
  • NN-SVG:全连接、LeNet、AlexNet
  • PlotNeuralNet:使用Latex编写
  • Netron:多种格式的网络模型文件可视化
  • ZETANE:可视化特征图(热力图)
  • Tensorspace.js:浏览器中使用
  • GRAPHCORE:类似神经元的炫酷扫描图
  • nn_vis:3D交互式
  • PowerPoint

猜你喜欢

转载自blog.csdn.net/qq_46378251/article/details/129376743
今日推荐