Keras中神经网络可视化模块keras.utils.visualize_util 的安装
程序员文章站
2022-06-05 22:05:27
...
一、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')
上一篇: python中zip()方法应用实例分析
下一篇: 男票不听话?不存在的