产品支持情况:如下参数为全量芯片支持。
指定输入数据类型为FP16的输入节点名称。
例如:"node_name1;node_name2",指定的节点必须放在双引号中,节点中间使用英文分号分隔。
配置示例:
用于指定网络输入数据类型是否为FP16,数据格式是否为NC1HWC0。
该参数需要与INPUT_FP16_NODES配合使用。若IS_INPUT_ADJUST_HW_LAYOUT参数设置为true,对应INPUT_FP16_NODES节点的输入数据类型为FP16,输入数据格式为NC1HWC0。
参数取值:取值范围为false或true,默认值为false。
配置示例:
指定转图后计算图名称。
配置示例:
用于指定网络输出的数据类型是否为FP16,数据格式是否为NC1HWC0。
该参数需要与OUT_NODES配合使用。
若IS_OUTPUT_ADJUST_HW_LAYOUT参数设置为true,对应OUT_NODES中输出节点的输出数据类型为FP16,数据格式为NC1HWC0。
参数取值:false或true,默认为false。
配置示例:
指定某层输出节点(算子)作为网络模型的输出或指定网络模型输出的名称。
如果不指定输出节点(算子名称),则模型的输出默认为最后一层的算子信息,如果指定,则以指定的为准。
某些情况下,用户想要查看某层算子参数是否合适,则需要将该层算子的参数输出,即可以在模型编译时通过该参数指定输出某层算子,模型编译后,在相应.om模型文件最后即可以看到指定输出算子的参数信息,如果通过.om模型文件无法查看,则可以将.om模型文件转换成JSON格式后查看。
支持三种格式:
格式1:"node_name1:0;node_name1:1;node_name2:0"。
网络模型中的节点(node_name)名称,指定的输出节点必须放在双引号中,节点中间使用英文分号分隔。node_name必须是模型编译前的网络模型中的节点名称,冒号后的数字表示第几个输出,例如node_name1:0,表示节点名称为node_name1的第1个输出。
配置示例:
[object Object]格式2:"topname1;topname2"。(仅支持CAFFE)
某层输出节点的topname,指定的输出节点必须放在双引号中,节点中间使用英文分号分隔。topname必须是模型编译前的caffe网络模型中的layer的某个top名称;若几个layer有相同的topname,最后一个layer为准。
配置示例:
[object Object]格式3:"output1;output2;output3"(仅支持ONNX)
指定网络模型输出的名称(output的name),指定的output的name必须放在双引号中,多个output的name中间使用英文分号分隔。output必须是网络模型的输出。
配置示例:
[object Object]
指定编译时需要生效的融合规则列表。
融合规则分类如下:
内置融合规则:
General:各网络通用的scope融合规则;默认生效,不支持用户指定失效。
Non-General:特定网络适用的scope融合规则;默认不生效,用户可以通过ENABLE_SCOPE_FUSION_PASSES参数指定生效的融合规则列表。
用户自定义的融合规则:
General:加载后默认生效,暂不提供用户指定失效的功能。
Non-General:加载后默认不生效,用户可以通过ENABLE_SCOPE_FUSION_PASSES参数指定生效的融合规则列表。
指定的融合规则必须放在双引号中,规则中间使用英文逗号分隔。
配置示例:
[object Object]
指定模型文件输入节点的name和index属性的映射关系。系统按照输入name的顺序,设置对应输入节点的index属性。
配置示例:
模型输入的shape信息。
参数取值:
静态shape。
- 若模型为单个输入,则shape信息为"input_name:n,c,h,w";指定的节点必须放在双引号中。
- 若模型有多个输入,则shape信息为"input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2";不同输入之间使用英文分号分隔,input_name必须是转换前的网络模型中的节点名称。
若原始模型中输入数据的某个或某些维度值不固定,当前支持通过设置shape范围的方式转换模型。
设置shape范围。
[object Object]Atlas 200I/500 A2 推理产品不支持设置shape范围。
[object Object]设置INPUT_SHAPE参数时,可将对应维度的值设置为范围。
支持按照name设置:"input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2",例如:"input_name1:8~20,3,5,-1;input_name2:5,3~9,10,-1"。指定的节点必须放在双引号中,节点中间使用英文分号分隔。input_name必须是转换前的网络模型中的节点名称。如果用户知道data节点的name,推荐按照name设置。
支持按照index设置:"n1,c1,h1,w1;n2,c2,h2,w2",例如:"8~20,3,5,-1;5,3~9,10,-1"。可以不指定节点名,节点按照索引顺序排列,节点中间使用英文分号分隔。按照index设置shape范围时,data节点需要设置属性index,说明是第几个输入,index从0开始。
如果用户不想指定维度的范围或具体取值,则可以将其设置为-1,表示此维度可以使用>=0的任意取值,该场景下取值上限为int64数据类型表达范围,但受限于host和device侧物理内存的大小,用户可以通过增大内存来支持。
shape为标量。
非动态分档场景:
shape为标量的输入,可选配置,例如模型有两个输入,input_name1为标量,即shape为"[]"形式,input_name2输入shape为[n2,c2,h2,w2],则shape信息为"input_name1:;input_name2:n2,c2,h2,w2",指定的节点必须放在双引号中,不同输入之间使用英文分号分隔,input_name必须是转换前的网络模型中的节点名称;标量的输入如果配置,则配置为空。
配置示例:
静态shape,例如某网络的输入shape信息,输入1:input_0_0 [16,32,208,208],输入2:input_1_0 [16,64,208,208],则INPUT_SHAPE的配置信息为:
[object Object]设置shape范围的示例:
[object Object]shape为标量
非动态分档场景
shape为标量的输入,可选配置。例如模型有两个输入,input_name1为标量,input_name2输入shape为[16,32,208,208],配置示例为:
[object Object]上述示例中的input_name1为可选配置。
[object Object]