使 Netron 支持 PaddlePaddle 模型子图显示

先介绍一下什么是 PaddlePaddle 的模型子图。一般的神经网络都可以表示成一张由算子组成的计算图,但是对一些较为复杂的神经网络,可能会存在一些条件分支。PaddlePaddle 在构建这种条件分支的网络时,会把分支内的计算图单独保存成一张子图。

具体到 PaddlePaddle 的内部数据结构时,每个子图就是 Program 内的一个 Block。这个 Block 内包含该子图的所有中间变量,op 算子和参数等。

目前 PaddlePaddle 的模型可视化主要是依赖 Netron,包括 PadddlePaddle 提供的 VisualDL 工具里内嵌的也是 Netron。

我最近在研究 PaddlePaddle 模型优化的时候,发现 VisualDL 完全不支持子图的可视化。我稍微研究了一下 Netron 的代码,想把子图的可视化给加上。但没想到的是,其实 Netron 本身已经做了 PaddlePaddle 子图结构的解析,只是代码上存在一点儿 bug,导致子图无法被选择出来。

我就修复了一下这个 BUG,提交了一个 PR: https://github.com/lutzroeder/netron/pull/588 。希望对 PaddlePaddle 的用户能有所帮助。

只是 Netron 项目的 Owner lutzroeder 有些奇怪。他不是直接接受这个 PR,而是自己做一些修改后提交一个新的 commit 引用了这个 PR,不知道出于什么目的。这个习惯会让人很难分析出来对 PaddlePaddle 模型解析代码感兴趣的人都是谁,对于维护并不便利。

发表评论

电子邮件地址不会被公开。 必填项已用*标注