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

来源:互联网 发布:高级sql生成选项 编辑:程序博客网 时间:2024/05/22 10:51

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

[python] view plain copy
 print?
  1. from keras.utils.visualize_util import plot  
  2. plot(model, to_file='model.png')  
:笔者使用的Keras版本是1.0.6,如果是python3.5
fromkeras.utilsimportplot_model
plot_model(model,to_file='model.png')


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

安装步骤

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

测试方法

使用以下脚本

[python] view plain copy
 print?
  1. # encoding: utf-8  
  2. """ 
  3.  
  4. """  
  5.   
  6. import numpy as np  
  7. from keras.models import Sequential  
  8. from keras.layers.core import Dense, Activation  
  9. from keras.optimizers import SGD  
  10. from keras.utils import np_utils      
  11. from keras.utils.visualize_util import plot  
  12.   
  13.   
  14. def run():  
  15.     # 构建神经网络  
  16.     model = Sequential()  
  17.     model.add(Dense(4, input_dim=2, init='uniform'))  
  18.     model.add(Activation('relu'))  
  19.     model.add(Dense(2, init='uniform'))  
  20.     model.add(Activation('sigmoid'))  
  21.     sgd = SGD(lr=0.05, decay=1e-6, momentum=0.9, nesterov=True)  
  22.     model.compile(loss='binary_crossentropy', optimizer=sgd, metrics=['accuracy'])  
  23.   
  24.     # 神经网络可视化  
  25.     plot(model, to_file='model.png')  
  26.   
  27. if __name__ == '__main__':  
  28.     run()  
因为我的是python3.5,可能不兼容1.1.0版本的pydot,

所以我使用了

pip install pydot

运行例子,这时候会显示错误: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模型图

模型可视化来,具体的参考Keras的模型可视化

要下载的有这么几个模块: 
graphviz,pydot,pydot_ng 

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

可以以上个程序测试。



最后验证是否安装好pydot:

import pydot

没有报错即为安装成功



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

[python] view plain copy
  1. import pydot  
  2.   
  3. g = pydot.Dot(graph_type='graph')  
  4.   
  5. g.add_node(pydot.Node(str(0), fontcolor='transparent'))  
  6. for i in range(5):  
  7.   g.add_node(pydot.Node(str(i + 1)))  
  8.   g.add_edge(pydot.Edge(str(0), str(i + 1)))  
  9.   for j in range(5):  
  10.     g.add_node(pydot.Node(str(j + 1) + '0' + str(i + 1)))  
  11.     g.add_edge(pydot.Edge(str(j + 1) + '0' + str(i + 1), str(j + 1)))  
  12. g.write_png('C:/ch02_fig2-9_graph.png', prog='neato')  



阅读全文
0 0