精度对比工具
精度对比工具用于比较Lyngor和第三方框架模型的结果误差。
精度对比工具支持2种模式:
单层对比:基于多层对比工具逐层推理结果,逐数进行误差比对。
多层对比:基于模型中1个或多个层次,进行误差比对。
备注
如需比对结果误差,推荐先使用多层对比工具定位到出错的层;
如需定位问题原因,推荐使用单层对比进行逐数定位。
单层对比
命令
compare single
参数说明
参数 |
含义 |
---|---|
-l 或 --left |
基于多层对比工具输出用于比较精度的结果文件 (numpy的导出格式)。 【数据类型】STR 【是否必选】是 |
-r 或 --right |
基于多层对比工具输出用于比较精度的结果文件 (numpy的导出格式)。 【数据类型】STR 【是否必选】是 |
-o 或 --output_file |
用于指定输出文件(csv)的保存路径。 【数据类型】STR 【是否必选】否 【默认取值】当前目录 ./compare_single_result.csv |
输入示例
compare single -l ./compare_result/apu_resnet_v1_50_logits_BiasAdd:0.npy -r ./compare_result/resnet_v1_50_logits_BiasAdd:0.npy
输出示例
compare_single_result.csv
Index |
Position |
Left Result |
Right Result |
Absolute |
Relative |
---|---|---|---|---|---|
0 |
0000 |
0.1 |
0.2 |
0 |
0 |
1 |
0001 |
0.1 |
0.2 |
0 |
0 |
2 |
0002 |
0.1 |
0.2 |
0 |
0 |
3 |
0010 |
0.1 |
0.2 |
0 |
0 |
输出说明
选项 |
说明 |
---|---|
Index |
序号。 |
Position |
数据位置。 |
Left Result |
|
Right Result |
|
Absolute |
绝对值误差。 |
Relative |
相对误差。 |
多层对比
命令
compare multi
参数说明
参数 |
含义 |
---|---|
-f 或 --framework |
用于指定模型的框架类型。 【数据类型】ENUM 【取值范围】
【是否必选】否 【默认取值】Tensorflow |
-n 或 --output_nodes |
用于设置输出node的名称,可指定任意层。 【数值类型】STR 【取值范围】一个或多个模型中实际存在的层的名字 【是否必选】否 【默认取值】None 【配置说明】
|
-o 或 --output |
用于指定输出文件路径。 【数据类型】STR 【取值范围】文件存储的路径 【是否必选】否 【默认取值】 compare_result 文件夹 |
-i 或 --input |
模型的输入配置,默认为None。 【数据类型】STR 【取值范围】JSON格式的参数或JSON文件路径 【JSON参数格式】 {'input':(1,224,224,3), 'input1':[(1,224,224,3),
'float16']}
【JSON文件格式】 {
'input1':{
"shape":[1,2,3],
"data":[1,2,3,4,5,6],
"dtype":'int32'
},
'input2':{
"shape":[1,2,3],
"data":[1,2,3,4,5,6],
"dtype":'int32'
}
}
【是否必选】是 备注 inputs可以为JSON格式的输入描述信息也 可以是具体的JSON文件。 |
-m 或 --model |
用于指定待编译的模型。 【数据类型】STR 【取值范围】实际存在的相对路径或绝对路径 【是否必选】否 【默认值】None |
-w 或 --weight |
用于指定权重路径。 【数据类型】STR 【取值范围】支持相对路径和绝对路径 【是否必选】否 【配置说明】
【默认取值】None |
-a 或 --is_analysis |
用于设置是否分析结果。 【数据类型】BOOL 【是否必选】否 【默认取值】False |
输入示例
compare multi -m lyngor_sample/models/tensorflow/resnet_v1_50.pb -i lyngor_sample/data/resnet/resnet50_data.json -n resnet_v1_50/predictionsresnet_v1_50/logits/BiasAdd -a -o ./compare_result
compare multi -m lyngor_sample/models/tensorflow/resnet_v1_50.pb -i "{'input':[(1,224,224,3),'float32']}" -n resnet_v1_50/predictions resnet_v1_50/logits/BiasAdd -a -o ./compare_result
结果文件
结果文件主要包含3类文件:框架结果数据、Lyngor结果数据和结果分析表格(可选)。
框架Golden输出:
output\_${name}.npy
APU模拟库或芯片输出:
apu_output\_${name}.npy
其中name为节点名称,
name
中有/
的话会替换成_
。结果一般以欧式距离小于等于0.02为主要指标,其它为辅助参考。
输出示例
all_result.csv
Name |
euclidean distance |
cosine similarity |
max absolute |
standard deviation |
T distance |
---|---|---|---|---|---|
output1 |
0.2 |
0.2 |
0.2 |
(0.1,0.2) |
0.2 |
output2 |
0.2 |
0.2 |
0.2 |
(0.1,0.2) |
0.2 |
输出说明
选项 |
说明 |
---|---|
Name |
模型输出名字,每一行代表一个模型输出。 |
euclidean_distance |
欧式距离计算结果。 结果分布在 \(\mathbf{\lbrack 0, +}\mathbf{\infty}\mathbf{)}\) 范围内,越接近0误差越小。 |
cosine_similarity |
余弦相似度计算结果。 结果分布在 \(\mathbf{\lbrack}\mathbf{-}\mathbf{1,1)}\) 范围内,越接近1误差越小。 |
max_absolute |
最大绝对误差计算结果。 结果分布在 \(\mathbf{\lbrack 0, +}\mathbf{\infty}\mathbf{)}\) 范围内,越接近0误差越小。 |
standard_deviation |
标准差计算结果。 结果分布在 \(\mathbf{\lbrack 0, +}\mathbf{\infty}\mathbf{)}\) 范围内,越接近0误差越小。 |
T_distance |
Lyngor内部定义计算结果。 结果分布在 \(\mathbf{\lbrack 0, +}\mathbf{\infty}\mathbf{)}\) 范围内,越接近0误差越小。 |