You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Keras/TensorFlow中查看指定样式的深度神经网络完整图形结构?

在Keras/TensorFlow中生成类似样式的深度神经网络结构图

嘿,我懂你想要的是那种层级分明、能清晰展示每层神经元数量的神经网络结构图,就像你贴出来的那种对吧?别担心,在Keras(包括TensorFlow集成的Keras)里有几种实用的方法可以实现,我给你详细拆解一下:

方法一:用ann_visualizer生成近似样式的静态图

这个库专门用来可视化人工神经网络,生成的图和你想要的样式几乎一致,会直观展示每一层的类型、神经元数量以及层级连接关系。

  • 第一步:安装依赖库
    先通过pip安装:
    pip install ann_visualizer
    
    另外还需要安装Graphviz系统软件(不是pip包),安装后记得把它的路径加入系统环境变量,这样Python才能调用它生成图片。
  • 第二步:代码实现
    假设你已经构建好的模型叫model,直接用下面的代码就能生成:
    from ann_visualizer.visualize import ann_viz
    
    # 生成可视化图,title是图的标题,filename是输出的文件(默认是.gv格式,也可以指定生成.png)
    ann_viz(model, title='我的深度神经网络结构', filename='network_structure.gv')
    
    运行后,你可以用Graphviz打开生成的.gv文件,或者直接修改参数让它生成PNG格式的图片,就能得到类似你示例的结构图啦。

方法二:用pyvis做交互式可视化

如果你想要能拖拽、缩放的交互式结构图,pyvis会是个好选择,它能生成HTML格式的交互页面,方便你查看细节。

  • 第一步:安装库
    pip install pyvis
    
  • 第二步:示例代码
    from pyvis.network import Network
    import tensorflow as tf
    
    # 初始化一个有向图网络
    net = Network(directed=True, height='800px', width='100%', bgcolor='#222222', font_color='white')
    
    # 遍历模型的每一层,添加节点和连接
    for idx, layer in enumerate(model.layers):
        # 节点标签包含层名称和神经元数量
        node_label = f"{layer.name}\n神经元数量: {layer.output_shape[-1]}"
        net.add_node(f"layer_{idx}", label=node_label, size=20)
        # 连接当前层和上一层
        if idx > 0:
            net.add_edge(f"layer_{idx-1}", f"layer_{idx}")
    
    # 保存为HTML文件,打开就能交互查看
    net.write_html('interactive_network.html')
    

方法三:用Matplotlib自定义绘图(完全可控)

要是你不想依赖第三方库,也可以用Matplotlib手动绘制,完全按照你想要的样式调整:

  • 核心思路:
    1. 先提取模型每一层的神经元数量:layer_sizes = [layer.output_shape[-1] for layer in model.layers]
    2. 用plt.scatter绘制每一层的神经元节点,用直线连接相邻层的节点
    3. 添加层名称、坐标轴标注等元素,调整颜色、大小等样式
  • 简单示例片段:
    import matplotlib.pyplot as plt
    
    layer_sizes = [layer.output_shape[-1] for layer in model.layers]
    num_layers = len(layer_sizes)
    
    # 绘制节点
    for i, size in enumerate(layer_sizes):
        x = [i]*size
        y = range(size)
        plt.scatter(x, y, s=100, color='blue')
        # 添加层名称标注
        plt.text(i, size//2, f"Layer {i}\n({size} units)", ha='center', va='center')
    
    # 绘制连接线条
    for i in range(num_layers-1):
        for y1 in range(layer_sizes[i]):
            for y2 in range(layer_sizes[i+1]):
                plt.plot([i, i+1], [y1, y2], color='gray', linewidth=0.5)
    
    plt.axis('off')
    plt.title('自定义神经网络结构图')
    plt.show()
    

这些方法里,ann_visualizer生成的图和你贴的示例样式最匹配,优先推荐试试这个哦!

内容的提问来源于stack exchange,提问作者Sa Na

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:06:10