带 Topk 层的模型使用 TensorRT 预测 Softmax 输出 shape 改变,导致 Topk 校验失败
Created by: mzchtx
问题
模型中在 softmax layer 后接了 Topk layer(如下图),使用 TensorRT 子图预测会导致 softmax 的 shape 变化,触发 Topk layer 的校验失败。
错误信息如下图:
调试发现如果不使用 TensorRT 子图,则 softmax layer 的输出 shape 为[?, 3073],而加了 TensorRT 子图后,softmax layer 的输出 shape 为[?, 3073, 1, 1]。
而 paddle Topk layer 中默认取的是 shape 中的最后一个 dim,此时 [?, 3073, 1, 1] 这种情况会断言失败。
环境
- PaddlePaddle版本:1.5
- CUDA: 8.0
- TensorRT: 4.0.1.6
- CUDNN: 7.1