如何绘制自建2层CNN网络结构示意图?附Keras模型代码
2层卷积神经网络结构示意图绘制方案
待可视化网络结构梳理
你给出的Keras Sequential实现对应的层级顺序如下:
- 输入层:维度为
(n_timesteps, 16, 1)的单通道输入- 卷积层1:共8个10×8尺寸卷积核,采用same填充,ReLU激活,带L2(0.0001)正则项
- 卷积层2:共10个10×4尺寸卷积核,采用same填充,ReLU激活
- 平均池化层:池化窗口尺寸2×2
- Dropout层:神经元丢弃概率0.3
- Flatten展平层
- 全连接输出层:共6个神经元,Softmax激活,对应6分类任务
对应实现代码:
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, AveragePooling2D, Dropout, Flatten, Dense from tensorflow.keras.regularizers import l2 model = Sequential() model.add(Conv2D(8, (10,8), padding='same', activation='relu',activity_regularizer=l2(0.0001),input_shape= (n_timesteps, 16,1))) model.add(Conv2D(10,( 10,4), activation='relu', padding='same')) model.add(AveragePooling2D(pool_size=(2,2))) model.add(Dropout(0.3)) model.add(Flatten()) model.add(Dense(6, activation='softmax'))
可行绘制方案
针对你之前使用visualkeras效果差、NN-SVG绘制失败的情况,以下三种方案适配性更强,落地难度低:
方案1:使用Keras原生plot_utils工具(最快出图)
该工具是Keras官方配套的可视化接口,不会出现第三方工具对模型结构识别错误的问题。- 先安装依赖:首先安装系统层面的graphviz组件,再通过pip安装
pydot、pydot-ng两个Python包 - 直接调用接口导出图片,参考代码如下:
from tensorflow.keras.utils import plot_model plot_model(model, to_file='cnn_structure.png', show_shapes=True, show_layer_names=True, dpi=300)生成的图片会自动标注每一层的输入输出维度、层类型,导出的300dpi图片可直接用于报告或论文初稿。
- 先安装依赖:首先安装系统层面的graphviz组件,再通过pip安装
方案2:使用Netron本地可视化(最稳零代码)
该工具是本地运行的模型结构查看器,不存在网页工具的兼容、加载失败问题。你只需要将训练好的模型保存为.h5或SavedModel格式,直接将模型文件拖入Netron窗口即可自动生成结构示意图,所有层参数(卷积核尺寸、池化大小、dropout概率、激活函数)都会自动标注,支持手动调整视图后导出高清图片。方案3:使用draw_convnet脚本自定义绘制(出图质量最高)
如果需要绘制论文中常用的块式卷积网络示意图,可直接使用基于matplotlib编写的draw_convnet轻量脚本,不需要安装复杂依赖。你只需要对照自己的网络层级,修改脚本中每一层的通道数、尺寸、标注文字参数即可,支持自定义配色、字体、3D透视效果,不会出现visualkeras常见的层重叠、标注错位问题,生成的矢量图可直接用于正式发表。
内容的提问来源于stack exchange,提问作者zahra zare
相关产品推荐
相关产品推荐

