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

tf.keras.utils.plot_model 开启show_shapes时布局异常如何解决

问题原因

tf.keras.utils.plot_model 底层通过pydot生成Graphviz支持的dot格式描述,再调用Graphviz渲染最终模型图。你遇到的形状标注垂直错位问题,本质是依赖版本兼容bug:

  • pydot 1.4.2及后续部分版本,在生成节点内嵌的HTML表格标签时,会丢失单元格同行排布、水平对齐的相关属性,导致本应左右分栏的「标注列(input:/output:)」和「形状列」,被Graphviz识别为上下垂直排布的两行内容。
  • 若本地安装的Graphviz版本低于2.40,也会因HTML表格渲染规则不兼容,触发同类布局异常。
修复方案

按优先级选择任意一种方案即可解决:

  • 方案一(推荐,稳定性最高):替换存在bug的pydot为修复维护分支pydot-ng
    执行以下命令重装依赖:
    pip uninstall -y pydot
    pip install pydot-ng
    
    操作完成后重启Python运行环境,重新执行绘图代码即可得到水平分栏的预期效果。注意需提前确认Graphviz已正确安装,且其bin目录已加入系统环境变量,否则plot_model会抛出依赖缺失错误。
  • 方案二:降级pydot到无兼容问题的版本
    若不想替换现有依赖,直接将pydot降级到1.4.1版本即可:
    pip install pydot==1.4.1
    
  • 方案三:手动修改源码适配
    若不方便调整依赖版本,可找到本地TensorFlow安装路径下的tensorflow/python/keras/utils/vis_utils.py文件,定位到生成输入输出形状标注的HTML表格代码段,给所有<td>标签添加valign="top" align="left"属性,同时删除标签之间多余的换行空格,避免pydot将空白字符误解析为单元格换行。

内容的提问来源于stack exchange,提问作者RACHID BEN ABDELMALEK

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:57:17