TensorFlow1.12的打印结构:
for var in tf.trainable_variables():
print("Listing trainable variables ... ")
print(var)
TensorFlow1.12的打印参数:
import tensorflow as tf
reader = tf.train.NewCheckpointReader('logs/pre-trained/lasted_model.ckpt')
global_variables = reader.get_variable_to_shape_map()
for key in global_variables:
print("tensor_name: ", key)
print(reader.get_tensor(key))
pytorch 打印结构:
net = resnet()#实例化网络
print(net)
###pytorch 打印参数:
for name, parameters in net.named_parameters():#打印出每一层的参数的大小
print(name, ':', parameters.size())
for param_tensor in net.state_dict(): # 字典的遍历默认是遍历 key,所以param_tensor实际上是键值
print(param_tensor, '\t', net.state_dict()[param_tensor])
python打印到文本中:
f = open('text.txt', 'w')
print('abc', file = f, flush=False)
f.close()
已经保存模型参数查看
# # #读取参数
import torch
import numpy as np
import pickle
file=open("metadata.pkl","rb")
data=pickle.load(file)
print(data)
file.close()
y = torch.load("GKT-Transition-Scheduler.pt")
print(y)
参考链接:https://blog.csdn.net/superjunenaruto/article/details/111332349
(1)使用自带的tensorboard(不直观)
(2)使用netron工具打开(.pd 或者是.meta文件)
(3)第三方库CNNGraph( https://github.com/huachao1001/CNNGraph)
(4)tensorspace.js (这个比较高级,没用过)
(5)高层API中keras的可视化
(1)使用tensorboardX(不太直观)
(2)使用graphviz加上torchviz (依赖于graphviz和GitHub第三方库torchviz)
(3)使用微软的tensorwatch (只能在jupyter notebook中使用,个人最喜欢这种方式)
(4)使用netron可视化工具(.pt 或者是 .pth 文件)
#指定清华源安装
pip install netron -i https://pypi.tuna.tsinghua.edu.cn/simple
在预训练的模型文件同一目录下新建一个python文件netrontest.py
import netron
modelPath = "你的模型文件名.扩展名"
netron.start(modelPath)
在同一目录下打开命令行窗口执行python文件
python netrontest.py
这是会自动打开浏览器到地址http://localhost:8080
显示网络图。此时即可查看输入输出或其中层的信息。
我的模型只保留了相关参数
测试
import torch.nn as nn
import torch.nn.functional as F
import torch.onnx
import netron
class model(nn.Module):
def __init__(self):
super(model, self).__init__()
self.block1 = nn.Sequential(
nn.Conv2d(64, 64, 3, padding=1, bias=False),
nn.BatchNorm2d(64),
nn.ReLU(inplace=True),
nn.Conv2d(64, 32, 1, bias=False),
nn.BatchNorm2d(32),
nn.ReLU(inplace=True),
nn.Conv2d(32, 64, 3, padding=1, bias=False),
nn.BatchNorm2d(64)
)
self.conv1 = nn.Conv2d(3, 64, 3, padding=1, bias=False)
self.output = nn.Sequential(
nn.Conv2d(64, 1, 3, padding=1, bias=True),
nn.Sigmoid()
)
def forward(self, x):
x = self.conv1(x)
identity = x
x = F.relu(self.block1(x) + identity)
x = self.output(x)
return x
d = torch.rand(1, 3, 416, 416)
m = model()
o = m(d)
onnx_path = "onnx_model_name.onnx"
torch.onnx.export(m, d, onnx_path)
netron.start(onnx_path)
前三种详见pytorch 网络结构可视化方法汇总(三种实现方法详解) - 灰信网(软件开发博客聚合) (freesion.com)
https://blog.csdn.net/helei001/article/details/51842531
PyTorch 47.使用netron工具可视化pytorch模型 - 知乎 (zhihu.com) https://www.jianshu.com/p/2d1291d69a54
未完待续