使用keras的vis_utils生成可视化的神经网络结构图

Keras是一个非常好用的深度学习框架,不仅上手容易,还包含了很多现成的模型

Keras的应用模块Application提供了带有预训练权重的Keras模型,这些模型可以用来进行预测、特征提取和finetune。比如:Xception,VGG16,VGG19,ResNet50,InceptionV。

我们可以通过学习别人的模型来学习,keras中就包含了对模型结构的可视化操作,下面就来记录下。

生成模型结构图

首先看下面的代码

1
2
3
4
5
6
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(2, input_dim=1, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
print(model.summary())

这段代码一共有两个全链接层,summary的输出结果如下:

1
2
3
4
5
6
7
8
9
10
11
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 2) 4
_________________________________________________________________
dense_2 (Dense) (None, 1) 3
=================================================================
Total params: 7
Trainable params: 7
Non-trainable params: 0
_________________________________________________________________

那么我们如何对模型进行可视化呢?

1
2
from keras.utils.vis_utils import plot_model #导入工具库vis_utils
plot_model(model, to_file='test_plot.png', show_shapes=True, show_layer_names=True)

test_plot.png 就是我们想要的模型的可视化结果,图片如下:

测试模型结构

自带模型的结构

Keras的应用模块Application提供了带有预训练权重的Keras模型,下面我们来用res50来做个测试

1
2
3
4
5
6
7
8
from keras.applications.resnet50 import ResNet50
from keras.preprocessing import image
from keras.applications.resnet50 import preprocess_input, decode_predictions
import numpy as np
from keras.utils.vis_utils import plot_model
model = ResNet50(weights='imagenet')
plot_model(model, to_file='res50_plot.png', show_shapes=True, show_layer_names=True)

ResNet50模型结构

一共1.3M,这几就不放图片了,里面我们很清楚的看到连接跳层了,这也就是resnet的设计精髓。

通过这种方法学习现有的模型就非常方便了

windows下安装

如果执行时提示

1
plot_model() requires dependencies in addition to Python pydot and graphviz

plot_model需要安装 pydot,graphviz.所以需要提前安装
我这里直接用的anaconda所以直接执行

1
2
conda install pydotplus
conda install graphviz

就可以了,但是在windows下,需要安装 graphviz的执行文件
这里下载,然后将安装目录下的bin/加入到path中,其实plot_model,只需要里面的dot.exe这个文件,所以在安装完毕后直接在cmd中执行dot看看能否执行即可。