代码拉取完成,页面将自动刷新
69382
[MSLITE][CONVERT] ONNX QuantLinear支持从ONNX Const节点读取常量输入
已合并
What type of PR is this?
/kind task
What does this PR do / why do we need it:
描述:
使用MSLITE转换带QuantLinear算子的第三方ONNX模型,当前MSLITE仅支持从ONNX graph的initializer列表根据名称查找输入的常量tensor,但ONNX模型有可能将常量Tensor放在Constant node中。
本PR的修改点是:ONNX QuantLinear支持分别从iniliatizer和Const节点列表按名称查找常量输入。
注:GetConstantTensorData是基类OnnxNodeParser提供的方法,可以分别从initializer和nodes里面查找特定名称的tensor。
自验:
针对ONNX模型:包含以下结构,其中node"1000"是QuantLinear节点的一个常量输入。
"graph": {
"node": [
{
"output": [
"1000"
],
"name": "Constant_0",
"opType": "Constant",
"attribute": [
{
"name": "value",
"t": {
"dataType": 1,
"rawData": "XXX"
},
"type": "TENSOR"
}
]
},
{
"input": [
"image_tensor",
"1000",
"1001"
],
"output": [
"1002"
],
"name": "QuantizeLinear_2",
"opType": "QuantizeLinear"
},
基于本PR验证,转换成功。
Which issue(s) this PR fixes:
Fixes #I9P6OA:[MSLITE][CONVERT] ONNX QuantLinear支持从ONNX Const节点读取常量输入
Code review checklist 【代码检视checklist说明】:
-
典型安全编码问题 【违反安全编码案例】
- 是否进行空指针校验
- 是否进行返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值,C++标准库函数确认无问题可以屏蔽)
- 是否正确释放new/malloc申请的内存
-
性能分析 (如果涉及某个子项,请概述设计思想/修改内容)
- 是否修改热点函数 / 算法 / 算子
- 是否考虑并发场景
- 是否考虑通信场景
-
- 是否符合编码规范 【编码规范】
-
- 是否遵守 SOLID原则 / 迪米特法则
-
- 是否涉及模块/特性间交互 (若涉及请概述实现思路)
-
- 是否具备UT测试用例看护 && 测试用例为有效用例 (若新特性无测试用例看护请说明原因)
-
- 是否正确加载、释放秘钥
-
错误处理与记录
- 是否充分考虑接口的异常场景
- 是否正确记录错误信息
Special notes for your reviewers: