文章目录
-
- 1. 介绍
-
- 1.1 导出onnx不成功
- 1.2 分析和解决方案
- 2. 案例
-
- 2.1 Asinh算子注册
-
- 2.1.1 导出onnx
- 2.1.2 算子注册
- 2.2 自定义算子的注册
-
- 2.1 直接导出自定义算子
- 2.2 自定义算子的注册并导出
- 2.3 导出带deformable conv 的onnx
-
- 2.3.1 直接导出deformable conv
- 2.3.2 注册并导出deformable_conv
- 结论
onnx算子的注册
在工程实际是非常实用的方法,可以帮助我们在遇到从pytoch导出onnx时候出现
算子不兼容
的问题时,
如何去解决
。比较常见的,比如我们经常会从github中找到一些开源的代码,在导出onnx时发现会遇比如算子不兼容,或者好不容易导出onnx之后,转出tensort 模型时发现各种算子不兼容,这些在工程实际中是非常常见的问题。
本节主要解决pytorch导出onnx出现不兼容的算子时通过注册算子的方法实现onnx导出。但注册的算子在推理时,还需要基于c++实现plugin从而实现推理,这部分在后续章节会详细介绍。
本节主要会介绍以下几个算子注册的案例:
- (1) asinh 算子的注册
- (2) 自定义的算子custom_op的注册
- (3) deformable conv 导出onnx
导出onnx的效果如上,我们可以导出自定义的算子,或者注册算子(如Asinh, defom_conv2d), 使得导出的onnx看起来比较简洁,而不需要在onnx导出时跟踪一大堆中间的算子。