pytorch打印网络结构的实例

  

最简单的方法当然可以直接打印(净),但是这样网络比较复杂的时候效果不太好,看着比较乱,以前使用咖啡的时候有一个网站可以在线生成网络框图,tensorflow可以用张量板,keras中可以用model.summary(),或者plot_model () .pytorch没有这样的API,但是可以用代码来完成。

  

<强>(1)安装环境:graphviz

        conda安装- n pytorch python-graphviz      

或:         sudo apt-get安装graphviz      

或者从官网下载,按此教程。

  

<强>(2)生成网络结构的代码:

        def make_dot (var, params=None):   ”“”产生的Graphviz表示PyTorch autograd图   蓝色节点变量要求研究生,橙色是张量   保存在torch.autograd.Function落后   参数:   var:输出变量   (名称、变量的参数:dict)将名称添加到节点   要求毕业生(TODO:可选)   ”“”   如果参数个数不是没有:   断言isinstance (params.values()[0],变量)   param_map={id (v): k, k、v params.items ()}      node_attr=dict(风格=疤盥?   形状=昂凶印?   对齐='左',   字形大??2”,   ranksep=' 0.1 ',   身高=' 0.2 ')   点=有向图(node_attr=node_attr graph_attr=dict类型(大?12,12))   看到=组()      def size_to_str(尺寸):   返回' (' + (" ")。加入([' % d ' % v v的大小])+“)”   def add_nodes (var):   如果var不在看到:   如果torch.is_tensor (var):   dot.node (str (id (var)), size_to_str (var.size ()), fillcolor=俺壬?   elif hasattr (var,“变量”):   u=var.variable   name=param_map [id (u)]如果参数个数不是没有别人”   node_name=%年代\ n % s %(名称、size_to_str (u.size ()))   dot.node (str (id (var))、node_name fillcolor=發ightblue”)   其他:   dot.node (str (id (var)), str(类型(var) .__name__))   seen.add (var)   如果hasattr (var, next_functions):   u var.next_functions:   如果你[0]不是没有:   dot.edge (str (id (u [0])), str (id (var)))   add_nodes (u [0])   如果hasattr (var, saved_tensors):   t var.saved_tensors:   dot.edge (str (id (t)), str (id (var)))   add_nodes (t)   add_nodes (var.grad_fn)   返回点      

<强>(3)打印网络结构:

        进口火炬   从火炬。autograd导入变量   进口火炬。神经网络是神经网络   从graphviz进口有向图      类CNN (nn.module):   def __init__(自我):   ******   def向前(自我,x):   ******   返回了      *****************************   def make_dot(): #复制上面的代码   *****************************      if __name__==癬_main__”:   网=CNN ()   x=变量(火炬。randn (1, - 1, 1024, 1024))   y=净(x)   g=make_dot (y)   g.view ()      params=列表(net.parameters ())   k=0   因为我在参数:   l=1   打印(“该层的结构:“+ str(列表(i.size ())))   在i.size j ():   j l *=打印(“该层参数和:“+ str (l))   k=k + l   打印(“总参数数量和:“+ str (k))      

<>强(4)结果展示(例如这是一个resnet块类型的网络):

  

 pytorch打印网络结构的实例

  

以上这篇pytorch打印网络结构的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

pytorch打印网络结构的实例