Created by: FrostML
根据上图中的模型结构,两个 mul op 的 weight_shape 是 128*128,即在 fuse 成 fc 的时候,在 fc_fuse_pass.cc 里面会执行 padding 操作。并且名称也是相同的,都是 tanh.w,于是 w->Name()
得到的名称相同。
在第一个 mul+elementwise_add 的结构在 fuse 为 fc 做了 padding 之后,名为 tanh.w 的 var_shape 已经变成了 132*132 。指定 padding_weight 为 true。
第二个相同的结构过来的时候,使用 w->Name()
获取的 shape 就是 132*132,不会再做 padding,即 padding_weight 为 false,程序不知道这个结构也要做 padding ,所以 kernel 计算的时候 shape 对不上了。故报错。
这个 PR 修复了这个问题。