Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
magicwindyyd
mindspore
提交
5c8be15d
M
mindspore
项目概览
magicwindyyd
/
mindspore
与 Fork 源项目一致
Fork自
MindSpore / mindspore
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
mindspore
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
5c8be15d
编写于
8月 07, 2020
作者:
S
sunsuodong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix add kernel output address
上级
3b7df4e5
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
6 addition
and
16 deletion
+6
-16
mindspore/lite/src/runtime/kernel/arm/int8/relu_int8.cc
mindspore/lite/src/runtime/kernel/arm/int8/relu_int8.cc
+1
-5
mindspore/lite/src/runtime/kernel/arm/opclib/add_int8.cc
mindspore/lite/src/runtime/kernel/arm/opclib/add_int8.cc
+3
-8
mindspore/lite/src/runtime/kernel/arm/opclib/int8/relu_int8.h
...spore/lite/src/runtime/kernel/arm/opclib/int8/relu_int8.h
+2
-3
未找到文件。
mindspore/lite/src/runtime/kernel/arm/int8/relu_int8.cc
浏览文件 @
5c8be15d
...
...
@@ -39,11 +39,7 @@ int ReluInt8CPUKernel::Init() {
quant_arg_
.
output_arg
.
zp_
=
output
->
GetQuantParams
().
front
().
zeroPoint
;
const
double
multiplier
=
quant_arg_
.
input_arg
.
scale_
/
quant_arg_
.
output_arg
.
scale_
;
QuantizeMultiplierSmallerThanOne
(
multiplier
,
&
quant_arg_
.
input_multiplier_
,
&
quant_arg_
.
input_shift_
);
int
left_shift
=
-
quant_arg_
.
input_shift_
>
0
?
-
quant_arg_
.
input_shift_
:
0
;
quant_arg_
.
right_shift_
=
-
quant_arg_
.
input_shift_
>
0
?
0
:
quant_arg_
.
input_shift_
;
quant_arg_
.
left_shift_result_
=
(
1
<<
left_shift
);
QuantizeRoundParameter
(
multiplier
,
&
quant_arg_
.
input_multiplier_
,
&
quant_arg_
.
left_shift_
,
&
quant_arg_
.
right_shift_
);
return
RET_OK
;
}
...
...
mindspore/lite/src/runtime/kernel/arm/opclib/add_int8.cc
浏览文件 @
5c8be15d
...
...
@@ -83,7 +83,7 @@ void AddInt8NEON(int8_t *input0_data, int8_t *input1_data, int8_t *output_data,
int16x8_t
res_s16
=
vcombine_s16
(
sum_low
,
sum_high
);
int8x8_t
res_u8_n0
=
vqmovn_s16
(
res_s16
);
vst1_s8
(
output_data
,
res_u8_n0
);
vst1_s8
(
output_data
+
*
index
,
res_u8_n0
);
}
}
#endif
...
...
@@ -110,13 +110,8 @@ void AddInt8(int8_t *input0_data, int8_t *input1_data, int8_t *output_data, int6
para
->
output_multiplier_
),
para
->
right_shift_out_
)
+
para
->
output_offset_
;
if
(
raw_output
>
para
->
output_activation_max_
)
{
output_data
[
index
]
=
para
->
output_activation_max_
;
}
else
if
(
raw_output
<
para
->
output_activation_min_
)
{
output_data
[
index
]
=
para
->
output_activation_min_
;
}
else
{
output_data
[
index
]
=
(
int8_t
)
raw_output
;
}
output_data
[
index
]
=
(
int8_t
)
MSMAX
(
para
->
output_activation_min_
,
MSMIN
(
raw_output
,
para
->
output_activation_max_
));
}
return
;
}
...
...
mindspore/lite/src/runtime/kernel/arm/opclib/int8/relu_int8.h
浏览文件 @
5c8be15d
...
...
@@ -25,9 +25,8 @@ struct ReluQuantArg {
QuantArg
input_arg
;
QuantArg
output_arg
;
int
input_multiplier_
;
int
inpu
t_shift_
;
int
lef
t_shift_
;
int
right_shift_
;
int
left_shift_result_
;
};
inline
void
ReluInt8
(
const
int8_t
*
src
,
int
length
,
int8_t
*
dst
,
ReluQuantArg
*
arg
)
{
...
...
@@ -38,7 +37,7 @@ inline void ReluInt8(const int8_t *src, int length, int8_t *dst, ReluQuantArg *a
}
const
int32_t
input_val
=
src
[
i
]
-
arg
->
input_arg
.
zp_
;
const
int32_t
scaled_input
=
SaturatingRoundingDoublingHighMul
(
input_val
,
arg
->
input_multiplier_
);
const
int32_t
shifted_input
=
RoundingDivideByPOT
(
scaled_input
*
arg
->
left_shift_result_
,
-
arg
->
right_shift_
);
const
int32_t
shifted_input
=
RoundingDivideByPOT
(
scaled_input
*
(
1
<<
arg
->
left_shift_
)
,
-
arg
->
right_shift_
);
const
int32_t
output
=
shifted_input
+
arg
->
output_arg
.
zp_
;
dst
[
i
]
=
(
int8_t
)
output
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录