zoukankan      html  css  js  c++  java
  • Caffe学习系列——工具篇:神经网络模型结构可视化

    Caffe学习系列——工具篇:神经网络模型结构可视化

    在Caffe中,目前有两种可视化prototxt格式网络结构的方法:

    • 使用Netscope在线可视化
    • 使用Caffe提供的draw_net.py

    本文将就这两种方法加以介绍

    1. Netscope:支持Caffe的神经网络结构在线可视化工具

      Netscope是个支持prototxt格式描述的神经网络结构的在线可视工具,网址: 
      http://ethereon.github.io/netscope/quickstart.html 
      它可以用来可视化Caffe结构里prototxt格式的网络结构,支持从GitHub Gist或者编辑器中可视化Caffe的网络结构。 
      使用起来也非常简单,打开这个地址:http://ethereon.github.io/netscope/#/editor

      点击Launch Editor,把你的描述神经网络结构的prototxt文件复制到该编辑框里,按shift+enter,就可以直接以图形方式显示网络的结构。 
      比如,以mnist的LeNet网络结构为例,把Caffe中example/mnist/lenet_train_test.prototxt文件的内容复制到编译框,按shift + enter,立即就可以得到可视化的结构图。 
          这里写图片描述

    2. 使用 python/draw_net.py绘制网络模型

      Python/draw_net.py, 这个文件,就是用来绘制网络模型的。也就是将网络模型由prototxt变成一张图片。 
      在绘制之前,需要先安装两个库:GraphViz和pydot。 Graphviz是一个开源的可视化软件,能够以抽象的图和网络表示结构信息,广泛使用于网络,生物信息学,软件工程等领域。

       
      1、安装GraphViz 
      # sudo apt-get install GraphViz 
      注意,这里用的是apt-get来安装,而不是pip. 
      2 、安装pydot 
      # sudo pip install pydot 
      用的是pip来安装,而不是apt-get

      安装好了,就可以调用脚本来绘制图片了

      draw_net.py执行的时候带三个参数

    >

    第一个参数:网络模型的prototxt文件 
    第二个参数:保存的图片路径及名字 
    第二个参数:–rankdir=x , x 有四种选项,分别是LR, RL, TB, BT 。用来表示网络的方向,分别是从左到右,从右到左,从上到小,从下到上。默认为LR。

    例:绘制Lenet模型

    # sudo python python/draw_net.py examples/mnist/lenet_train_test.prototxt netImage/lenet.png --rankdir=TB
    • 1
    • 1

          这里写图片描述

    3. 总结

       使用Netscope绘制出的图直观简洁,易于快速了解网络模型,但是缺少层内的细节信息; 
      使用draw_net.py绘制出的结构图保存了参数信息,细节更丰富,但是结构不是很清晰明了,这一点在大型模型上的体现尤为明显: 
      Netscope SSD 300x300模型 
      这里写图片描述

      draw_net.py SSD 300x300模型 
      这里写图片描述 
      如上图所示,对于复杂模型,Netscope能够较好地按安排各层图像的布局,使得SSD模型可视化结果更直观。缺点是博主没有找到本地化吧保存Netscope可视化结果的方法,在线查看大型模型不是很方便。 
      

    4. Reference

    [1] 10km. Netscope:支持Caffe的神经网络结构在线可视化工具 
    http://blog.csdn.net/10km/article/details/52713027 
    [2] denny的学习专栏. Caffe学习系列(18): 绘制网络模型 
    http://www.cnblogs.com/denny402/p/5106764.html

  • 相关阅读:
    ConcurrentHashMap实现原理及源码分析
    Java原子类实现原理分析
    谈谈Java中的volatile
    谈谈Java中的ThreadLocal
    HashMap实现原理及源码分析
    浅谈Oracle权限体系
    Oracle闪回技术详解
    数据结构(二)之二叉树
    图解排序算法(五)之快速排序——三数取中法
    图解排序算法(四)之归并排序
  • 原文地址:https://www.cnblogs.com/zhehan54/p/7208522.html
Copyright © 2011-2022 走看看