资源 | HiddenLayer:可视化PyTorch、TensorFlow神经网络图的轻量级工具!

选自GitHub

机器之心编译

参与:张倩、王淑婷

本文介绍了一个面向 PyTorch 和 TensorFlow 神经网络计算图和训练度量(metric)的轻量级库——HiddenLayer,它适用于快速实验,且与 Jupyter Notebook 兼容。

GitHub链接:https://github.com/waleedka/hiddenlayer

HiddenLayer 非常简单,易于扩展,且与 Jupyter Notebook 完美兼容。开发该工具的目的不是为了取代 TensorBoard 等高级工具,而是用在那些无需使用高级工具的用例中(杀鸡焉用宰牛刀)。HiddenLayer 由 Waleed Abdulla 和 Phil Ferriere 编写,已获得 MIT 许可证。

1. 可读的图

使用 HiddenLayer 在 Jupyter Notebook 中渲染你的神经网络图,或者渲染 pdf 或 png 文件。Jupyter notebook 示例请参考以下链接:

  • TensorFlow:https://github.com/waleedka/hiddenlayer/blob/master/demos/tf_graph.ipynb
  • Pytorch:https://github.com/waleedka/hiddenlayer/blob/master/demos/pytorch_graph.ipynb

这些图用于沟通高级架构。因此,低级细节在默认状态下是隐藏的(如权重初始化 ops、梯度、一般层类型的内部 ops 等)。HiddenLayer 还将常用层序列叠在一起。例如,Convolution -> RELU -> MaxPool 序列比较常用,为简单起见,它们被合并在一个盒子里。

自定义图

隐藏、折叠节点的规则是完全可定制的。你可以用 graph expressions 和 transforms 添加自己的规则。例如,使用以下命令可以将 ResNet101 中 bottleneck 块的所有节点折叠为一个节点。

# Fold bottleneck blocks
    ht.Fold("((ConvBnRelu > ConvBnRelu > ConvBn) | ConvBn) > Add > Relu", 
            "BottleneckBlock", "Bottleneck Block"),

2. Jupyter Notebook 中的训练度量

在 Jupyter Notebook 中运行训练试验非常有用。你可以绘制损失函数和准确率图、权重直方图,或者可视化一些层的激活函数。

在 Jupyter Notebook 之外:

在 Jupyter Notebook 外同样可以使用 HiddenLayer。在 Python 脚本中运行 HiddenLayer,可以打开度量的单独窗口。如果你使用的服务器没有 GUI,可以将图像截图存储为 png 文件以备后查。该用例示例参见:https://github.com/waleedka/hiddenlayer/blob/master/demos/history_canvas.py。

3. Hackable

HiddenLayer 是一个小型库。它覆盖基础元素,但你可能需要为自己的用例进行扩展。例如,如果你想将模型准确率表示为饼图,就需要扩展 Canbas 类,并添加新方法,如下所示:

class MyCanvas(hl.Canvas):
    """Extending Canvas to add a pie chart method."""
    def draw_pie(self, metric):
        # set square aspect ratio
        self.ax.axis('equal')
        # Get latest value of the metric
        value = np.clip(metric.data[-1], 0, 1)
        # Draw pie chart
        self.ax.pie([value, 1-value], labels=["Accuracy", ""])

示例参见:https://github.com/waleedka/hiddenlayer/blob/master/demos/pytorch_train.ipynb 或 https://github.com/waleedka/hiddenlayer/blob/master/demos/tf_train.ipynb。

Demo

PyTorch:

  • pytorch_graph.ipynb:此 notebook 展示了如何为一些流行的 PyTorch 模型生成图。
  • 地址:https://github.com/waleedka/hiddenlayer/blob/master/demos/pytorch_graph.ipynb
  • pytorch_train.ipynb:展示了如何在 PyTorch 中追踪和可视化训练度量。
  • 地址:https://github.com/waleedka/hiddenlayer/blob/master/demos/pytorch_train.ipynb
  • history_canvas.py:在没有 GUI 的情况下使用 HiddenLayer 的示例。
  • 地址:https://github.com/waleedka/hiddenlayer/blob/master/demos/history_canvas.py

TensorFlow:

  • tf_graph.ipynb:此 notebook 介绍了如何为不同的 TF SLIM 模型生成图。
  • 地址:https://github.com/waleedka/hiddenlayer/blob/master/demos/tf_graph.ipynb
  • tf_train.ipynb:展示了如何在 TensorFlow 中追踪和可视化训练度量。
  • 地址:https://github.com/waleedka/hiddenlayer/blob/master/demos/tf_train.ipynb
  • history_canvas.py:在没有 GUI 的情况下使用 HiddenLayer 的示例。
  • 地址:https://github.com/waleedka/hiddenlayer/blob/master/demos/history_canvas.py

安装

1. 先决条件

a. Python3、Numpy、Matplotlib 和 Jupyter Notebook。

b. 用 TensorFlow 或 PyTorch。

c. 用 GraphViz 及其 Python 封装来生成网络图。最简单的安装方式是:

**If you use Conda:**
```bash
conda install graphviz python-graphviz
```

**Otherwise:**
* [Install GraphViz](https://graphviz.gitlab.io/download/)
* Then install the [Python wrapper for GraphViz](https://github.com/xflr6/graphviz) using pip:
    ```
    pip3 install graphviz
    ```

2. 安装 HiddenLayer

A. 从 GitHub 中安装(开发者模式)

如果要在本地编辑或自定义库,使用此选项。

# Clone the repository
git clone git@github.com:waleedka/hiddenlayer.git
cd hiddenlayer

# Install in dev mode
pip install -e .

B. 使用 PIP

pip install hiddenlayer

本文为机器之心编译,转载请联系本公众号获得授权。

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2018-11-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏MyBlog

软件测试方法课程笔记(2)

为了产生少量的测试用例, 并且可以测试大部分的情况, 我们可以使用等价类划分的方法 比如对于输入值是范围值, 我们可以使用等价类划分成范围内的和不是范围内的两...

15320
来自专栏tkokof 的技术,小趣及杂念

数学笔记(一)之列主序矩阵

对于矩阵,OpenGL采用列主序(column-major order)存储,之前对于这个概念有些模糊,后来又了解了一些相关知识,在此一记~

12710
来自专栏SeanCheney的专栏

《利用Python进行数据分析·第2版》第9章 绘图和可视化9.1 matplotlib API入门9.2 使用pandas和seaborn绘图9.3 其它的Python可视化工具9.4 总结

信息可视化(也叫绘图)是数据分析中最重要的工作之一。它可能是探索过程的一部分,例如,帮助我们找出异常值、必要的数据转换、得出有关模型的idea等。另外,做一个可...

1.2K90
来自专栏计算机视觉战队

Deep Hash(深度哈希算法)

哈希的简单介绍: 用一个比喻来说明什么是哈希算法:假设有N只小猪,它们的体重各不相同,一开始我们把它们放在一个猪圈里面。如果想寻找其中某只小猪,只能一个一个的...

56660
来自专栏深度学习计算机视觉

A HierarchicalTest Case Prioritization Technique for Object Oriented Software

1、成员组成 (1)组长:张俊怡 (2)组员:孟令军 2、文献基本情况介绍 (1)文献名称:A HierarchicalTest Case Prioritiz...

36470
来自专栏pydata

Matlab C混合编程

在MATLAB中可调用的C或Fortran语言程序称为MEX文件。MATLAB可以直接把MEX文件视为它的内建函数进行调用。MEX文件是动态链接的子例程,MAT...

12020
来自专栏企鹅号快讯

动态神经网络工具包Dynet

作者|Murat 译者|陈亮芬 编辑|Emily 基于诸如 TensorFlow 等几种流行工具包的编程模型使用的是静态声明方法,这些工具包将网络架构的声明和执...

31870
来自专栏人工智能LeadAI

tensorflow的数据输入

tensorflow有两种数据输入方法,比较简单的一种是使用feed_dict,这种方法在画graph的时候使用placeholder来站位,在真正run的时候...

13950
来自专栏琦小虾的Binary

OpenCV像素点邻域遍历效率比较,以及访问像素点的几种方法

OpenCV像素点邻域遍历效率比较,以及访问像素点的几种方法 前言: 以前笔者在项目中经常使用到OpenCV的算法,而大部分OpenCV的算法都需要进行遍历操作...

573100
来自专栏本立2道生

Caffe源码理解1:Blob存储结构与设计

在逻辑上,Blob是个\(N_d\)维张量。当\(N_d=4\)时,Blob的shape定义为\(N * C * H * W\),即\(Num * Channe...

26620

扫码关注云+社区

领取腾讯云代金券