查看网络结构
打印方式
torchsummary 方式(输入格式不好控制)
参考网址
import torch
import torchvision
from torchsummary import summary
device = torch. device( 'cuda' if torch. cuda. is_available( ) else 'cpu' )
vgg = torchvision. models. vgg16( ) . to( device)
summary( vgg, input_size= ( 3 , 224 , 224 ) )
print方式 (简便,存在输出顺序与执行顺序不一致的问题)
for name, parameters in your_model. named_parameters( ) :
print ( name, ':' , parameters. size( ) )
可视化方式
HiddenLayer
pip install hiddenlayer
import hiddenlayer as h
vis_graph = h. build_graph( MyConvNet, torch. zeros( [ 1 , 1 , 28 , 28 ] ) )
vis_graph. theme = h. graph. THEMES[ "blue" ] . copy( )
vis_graph. save( "./demo1.png" )
PytorchVIZ
pip install torchviz
from torchviz import make_dot
x = torch. randn( 1 , 1 , 28 , 28 ) . requires_grad_( True )
y = MyConvNet( x)
MyConvNetVis = make_dot( y, params= dict ( list ( MyConvNet. named_parameters( ) ) + [ ( 'x' , x) ] ) )
MyConvNetVis. format = "png"
MyConvNetVis. directory = "data"
MyConvNetVis. view( )
tensorboardX(会存在一些版本的匹配问题,不太直观)
graphviz + torchviz (依赖于graphviz和GitHub第三方库torchviz)
微软的tensorwatch (只能在jupyter notebook中使用)
netron可视化工具(.pt 或者是 .pth 文件)
查看网络参数
params = list ( model. 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) )