1. 程式人生 > >資源 | HiddenLayer:視覺化PyTorch、TensorFlow神經網路圖的輕量級工具!

資源 | HiddenLayer:視覺化PyTorch、TensorFlow神經網路圖的輕量級工具!

本文介紹了一個面向 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 [email protected]:waleedka/hiddenlayer.git
cd hiddenlayer

# Install in dev mode
pip install -e .

B. 使用 PIP

pip install hiddenlayer

相關推薦

資源 | HiddenLayer視覺PyTorchTensorFlow神經網路輕量級工具

本文介紹了一個面向 PyTorch 和 TensorFlow 神經網路計算圖和訓練度量(metric)的輕量級庫——HiddenLayer,它適用於快速實驗,且與 Jupyter Notebook 相容。 GitHub連結:https://github.com/

視覺探索卷積神經網路提取特徵

前言 卷積神經網路的發展主要是為了解決人類視覺問題,不過現在其它方向也都會使用。發展歷程主要從Lenet5->Alexnet->VGG->GooLenet->ResNet等。 傳統神經網路 傳統BP神經網路層與層之間都是全連線的,對於影象處理領域,當神

視覺理解卷積神經網路

視覺化理解卷積神經網路 原文地址:http://blog.csdn.net/hjimce/article/details/50544370 作者:hjimce 一、相關理論   本篇博文主要講解2014年ECCV上的一篇經典文獻:《Visualizing and Und

深度學習(二十七)視覺理解卷積神經網路(反池 pooling unpooling)

本篇博文主要講解2014年ECCV上的一篇經典文獻:《Visualizing and Understanding Convolutional Networks》,可以說是CNN領域視覺化理解的開山之作,這篇文獻告訴我們CNN的每一層到底學習到了什麼特徵,然後作者通過視覺化進行調整網路,提高了精度。最近兩年深層

深度學習(二十七)視覺理解卷積神經網路

視覺化理解卷積神經網路作者:hjimce一、相關理論本篇博文主要講解2014年ECCV上的一篇經典文獻:《Visualizing and Understanding Convolutional Netw

用反捲積(Deconvnet)視覺理解卷積神經網路

視覺化理解卷積神經網路 作者:hjimce 一、相關理論 本篇博文主要講解2014年ECCV上的一篇經典文獻:《Visualizing and Understanding Convolutional Networks》,可以說是CNN領域視覺化理解的開山之作,這

tensorflow基本教程6視覺結果

#如何建立神經網路的結構:層 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt def add_layer(inputs,in_size,out_size,activation_function=

TensorFlow入門教程4視覺tensorboard

Tensorboard在pip中顯示的概要資訊是”lets you watch Tensors Flow“,watch tensors的flow就是Tensorboard所要做的視覺化的主要功能。一般用於確認tensorflow模型訓練過程的視覺化。 概要資訊

qml學習筆記(四)視覺元素RectangleImage

qml學習筆記(四):視覺化元素Rectangle、Image 前話        前面學習完Item基本元素後,繼續按照qt幫助檔案的介紹順序,學習元素Rectangle、Image 本章節內容        主要學習了Rectangle、        注意:

PyTorch視覺——tensorboardvisdom

一、pytorch與tensorboard結合使用 Tensorboard  Tensorboard一般都是作為tf的視覺化工具,與tf深度整合,它能夠展現tf的網路計算圖,繪製圖像生成的定量指標圖以及附加資料等。此外,Tensorboard也是一個獨立工具,只要儲存的資料遵循一定的格式,Tenso

Linux 7個運行級別(0關機,停機模式1單用戶模式2多用戶模式3完整的多用戶文本模式4系統未使用,保留一般不用5圖形模式6重啟模式)重置root密碼方法

oca alt 開機重啟 正常 說明 特殊情況 其中 ice root權限 init是Linux系統操作中不可缺少的程序之一。init進程,它是一個由內核啟動的用戶級進程。內核會在過去曾使用過init的幾個地方查找它,它的正確位置(對Linux系統來說)是/

Python全棧學習筆記day 20序列模組模組的匯入

  一、序列化模組 從資料型別 --> 字串的過程 :序列化 從字串 --> 資料型別的過程 :反序列化 json # 通用的序列化格式 # 只有很少的一部分資料型別(數字、字串、列表、字典、元組)能夠通過json轉化成字串 pickl

TensorFlow神經網路模組神經網路八股

1、前向傳播: 搭建從輸入到輸出的網路結構 forward.py: # 定義前向傳播過程 def forward(x, regularizer): w = b = y = return y # 給w賦初值,並把w的正則化損失加到總損失中 def g

BCGControlBar教程視覺管理器

BCGControlBar Pro for MFC最新試用版下載請猛戳>>> BCGControlBar庫框架允許您建立各種應用程式“skins”並輕鬆更改使用者介面元素的外觀。雖然該產品具有超過25個預先構建的視覺主題,但您可以輕鬆實現自定義主題。 在下圖中,您可以看到從“B

深度學習中的Xavier初始和He Initialization(MSRA初始Tensorflow中如何選擇合適的初始方法?

Xavier初始化: 論文:Understanding the difficulty of training deep feedforward neural networks 論文地址:http://proceedings.mlr.press/v9/glorot10a/glorot10a

Seaborn中文教程(一)視覺變數間的關係

眾所周知,Seaborn“可能”是Python下最友好、易用的視覺化工具了,視覺化效果也非常好。但是截止目前,並沒有一份中文教程供廣大國內Python使用者查閱學習。怎麼能因為語言的問題,讓大家錯過這麼好用的一個視覺化工具呢? 思考再三,我決定花一些時間將官方的英文文件整理出來,為大

視覺學習筆記3視覺分佈

有時候,顯示資料的實際分佈情況是最佳選擇。分佈圖可能不是正態的!可能存在異常值,使均值出現嚴重的偏差。條形圖等可以隱藏這些問題。你在一開始探索資料時,也需要檢視分佈圖。 直方圖 直方圖是將值分組成多個值範圍的條形圖。例如,假設有一組年齡

微分求積梯形辛浦生

復化梯形 將積分割槽間[a,b]劃分n等分,步長,求積節點,在每個小區間上應用梯形公式 然後將它們累加求和,作為所求積分I的近似值. 記      式為復化梯形求積公式,下標n表示將區間n等分。 演算法流程  演算法程式碼 double

踩坑筆記之環境配置——Ubuntu16.04caffepytorchtensorflowkerasanacondaopencv3matlab

(新版CSDN沒了markdown還有點兒難用不是很習慣。。排版很差將就看啦哈哈哈哈)強調一下&讓自己記住踩過的屎坑~刷機搭框架遇到問題——sudo下安裝caffe編譯出了問題——sudo su進入管理者再安裝例如:error:could not find/open

【2017CS231n】第十二講視覺和理解卷積神經網路

一.特徵視覺化1.1理解神將網路的層    下面我們瞭解一下神經網路內部發生了什麼。第一層:第一個卷積層由一個卷積核組成    在AlexNet中第一個卷積層由許多卷積核組成,每個卷積核的形狀是3*11*11,卷積核在影象上來回滑動,我們取影象塊和卷積核權重的內積,這就是第一