Keras中神经网络可视化模块keras.utils.visualize_util 的安装

一、Keras中提供了一个神经网络可视化的函数plot,并可以将可视化结果保存在本地。plot使用方法如下:

from keras.utils.visualize_util import plot  
plot(model, to_file='model.png')  

注:笔者使用的Keras版本是1.0.6,如果是python3.5

from
keras.utils
import
plot_model
plot_model(model,to_file='model.png')

不过这项功能依赖于graphviz模块与pydot模块,因此需要先安装这两个模块,并安装graphviz软件本身(笔者安装的版本为2.38)。

二、安装步骤

  • 命令行输入 pip install graphviz
  • 安装graphviz软件。官网地址为http://www.graphviz.org/
  • 解压版:配置环境变量。将安装目录中的graphviz-2.38\release\bin添加进Path环境变量
  • 安装版:安装msi
  • 命令行输入pip install pydot==1.1.0
  • 注:此处需要指定安装1.1.0版本的pydot,是因为最新版(截止2016.8最新版本号是1.2.x)中find_graphviz函数是deprecated的,使用时会报错

三、测试方法

  • 使用以下脚本
# encoding: utf-8  
""" 
 
"""  
  
import numpy as np  
from keras.models import Sequential  
from keras.layers.core import Dense, Activation  
from keras.optimizers import SGD  
from keras.utils import np_utils      
from keras.utils.visualize_util import plot  
  
  
def run():  
    # 构建神经网络  
    model = Sequential()  
    model.add(Dense(4, input_dim=2, init='uniform'))  
    model.add(Activation('relu'))  
    model.add(Dense(2, init='uniform'))  
    model.add(Activation('sigmoid'))  
    sgd = SGD(lr=0.05, decay=1e-6, momentum=0.9, nesterov=True)  
    model.compile(loss='binary_crossentropy', optimizer=sgd, metrics=['accuracy'])  
  
    # 神经网络可视化  
    plot(model, to_file='model.png')  
  
if __name__ == '__main__':  
    run()  
  • 运行例子,这时候会显示错误:No module named 'keras.utils.visualize_util'

pip install pydot==1.1.0 这种方法是针对python2可以,
但是python3就不行了,因为Python3安装的1.2.*版本里面有所变动,可视化的地方需要用到visualize_util这样一个api,但是在1.2.*中,这个api被取消掉了,所以python3的用户应该安装 pydot_ng

  • 命令行
    pip install pydot_ng
    pip install pydot
import numpy as np    
from keras.models import Sequential    
from keras.layers.core import Dense, Activation    
from keras.optimizers import SGD    
from keras.utils import np_utils        
from keras.utils.vis_utils import plot_model    
def run():    
    # 构建神经网络    
    model = Sequential()    
    model.add(Dense(4, input_dim=2, kernel_initializer='uniform'))    
    model.add(Activation('relu'))    
    model.add(Dense(2, kernel_initializer='uniform'))    
    model.add(Activation('sigmoid'))    
    sgd = SGD(lr=0.05, decay=1e-6, momentum=0.9, nesterov=True)    
    model.compile(loss='binary_crossentropy', optimizer=sgd, metrics=['accuracy'])    
    # 神经网络可视化    
    plot_model(model, to_file='model.png')    
if __name__ == '__main__':    
    run()  

注意:现在的可视化模块不叫做:keras.utils.visualize_util了,改成了keras.utils.vis_utils了,因此引入的时候要特别注意。

下面代码演示创建一个图:

import pydot  

g = pydot.Dot(graph_type='graph')  
g.add_node(pydot.Node(str(0), fontcolor='transparent'))  
for i in range(5):  
  g.add_node(pydot.Node(str(i + 1)))  
  g.add_edge(pydot.Edge(str(0), str(i + 1)))  
  for j in range(5):  
    g.add_node(pydot.Node(str(j + 1) + '0' + str(i + 1)))  
    g.add_edge(pydot.Edge(str(j + 1) + '0' + str(i + 1), str(j + 1)))  
g.write_png('C:/ch02_fig2-9_graph.png', prog='neato')  

你可能感兴趣的:(深度学习,机器学习)