Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
项目经理老王
Mace
提交
c654d5da
Mace
项目概览
项目经理老王
/
Mace
与 Fork 源项目一致
Fork自
Xiaomi / Mace
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Mace
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c654d5da
编写于
11月 08, 2019
作者:
L
luxuhui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add fp16 test case for mvnorm and lpnorm
N/A Signed-off-by:
N
Luxuhui
<
luxuhui@xiaomi.com
>
上级
a610d506
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
113 addition
and
0 deletion
+113
-0
test/ccunit/mace/ops/lpnorm_test.cc
test/ccunit/mace/ops/lpnorm_test.cc
+57
-0
test/ccunit/mace/ops/mvnorm_test.cc
test/ccunit/mace/ops/mvnorm_test.cc
+56
-0
未找到文件。
test/ccunit/mace/ops/lpnorm_test.cc
浏览文件 @
c654d5da
...
...
@@ -121,6 +121,63 @@ TEST_F(LpNormOpTest, SimpleTestSquareOpenCL2) {
0.680451
,
0.732793
,
0.683941
,
0.729537
});
}
namespace
{
template
<
DeviceType
D
,
typename
T
>
void
TestLpNormRandom
(
const
std
::
vector
<
index_t
>
&
input_shape
,
const
int
p
,
const
int
axis
)
{
// Construct graph
OpsTestNet
net
;
// Add input data
net
.
AddRandomInput
<
D
,
float
>
(
"Input"
,
input_shape
);
net
.
TransformDataFormat
<
DeviceType
::
CPU
,
float
>
(
"Input"
,
DataFormat
::
NHWC
,
"InputNCHW"
,
DataFormat
::
NCHW
);
OpDefBuilder
(
"LpNorm"
,
"LpNormTest"
)
.
Input
(
"InputNCHW"
)
.
Output
(
"OutputNCHW"
)
.
AddIntArg
(
"p"
,
p
)
.
AddIntArg
(
"axis"
,
axis
)
.
Finalize
(
net
.
NewOperatorDef
());
// run on cpu
net
.
RunOp
();
net
.
TransformDataFormat
<
DeviceType
::
CPU
,
float
>
(
"OutputNCHW"
,
DataFormat
::
NCHW
,
"Output"
,
DataFormat
::
NHWC
);
auto
expected
=
net
.
CreateTensor
<
float
>
();
expected
->
Copy
(
*
net
.
GetOutput
(
"Output"
));
OpDefBuilder
(
"LpNorm"
,
"LpNormTest"
)
.
Input
(
"Input"
)
.
Output
(
"Output"
)
.
AddIntArg
(
"p"
,
p
)
.
AddIntArg
(
"axis"
,
axis
)
.
AddIntArg
(
"T"
,
static_cast
<
int
>
(
DataTypeToEnum
<
T
>::
value
))
.
Finalize
(
net
.
NewOperatorDef
());
net
.
RunOp
(
D
);
if
(
DataTypeToEnum
<
T
>::
value
==
DT_HALF
)
{
ExpectTensorNear
<
float
>
(
*
expected
,
*
net
.
GetOutput
(
"Output"
),
1e-2
,
1e-3
);
}
else
{
ExpectTensorNear
<
float
>
(
*
expected
,
*
net
.
GetOutput
(
"Output"
),
1e-5
);
}
}
}
// namespace
TEST_F
(
LpNormOpTest
,
SimpleTestSquareHalfOpenCL
)
{
TestLpNormRandom
<
DeviceType
::
GPU
,
half
>
({
1
,
8
,
1
,
2
},
2
,
1
);
}
TEST_F
(
LpNormOpTest
,
SimpleTestSquareHalfOpenCL2
)
{
TestLpNormRandom
<
DeviceType
::
GPU
,
half
>
({
1
,
8
,
1
,
2
},
2
,
2
);
}
}
// namespace test
}
// namespace ops
}
// namespace mace
test/ccunit/mace/ops/mvnorm_test.cc
浏览文件 @
c654d5da
...
...
@@ -12,6 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
#include "mace/core/types.h"
#include "mace/ops/ops_test_util.h"
namespace
mace
{
...
...
@@ -161,6 +162,61 @@ TEST_F(MVNormOpTest, SimpleTestVarianceOpenCL) {
1.23241
,
1.45648
,
1.68056
,
1.90463
,
2.1287
});
}
namespace
{
template
<
DeviceType
D
,
typename
T
>
void
TestMVNormRandom
(
const
std
::
vector
<
index_t
>
&
input_shape
,
bool
normalize_variance
,
bool
across_channels
)
{
// Construct graph
OpsTestNet
net
;
// Add input data
net
.
AddRandomInput
<
D
,
float
>
(
"Input"
,
input_shape
);
net
.
TransformDataFormat
<
DeviceType
::
CPU
,
float
>
(
"Input"
,
DataFormat
::
NHWC
,
"InputNCHW"
,
DataFormat
::
NCHW
);
OpDefBuilder
(
"MVNorm"
,
"MVNormTest"
)
.
Input
(
"InputNCHW"
)
.
Output
(
"OutputNCHW"
)
.
AddIntArg
(
"normalize_variance"
,
normalize_variance
)
.
AddIntArg
(
"across_channels"
,
across_channels
)
.
Finalize
(
net
.
NewOperatorDef
());
// run on cpu
net
.
RunOp
();
net
.
TransformDataFormat
<
DeviceType
::
CPU
,
float
>
(
"OutputNCHW"
,
DataFormat
::
NCHW
,
"Output"
,
DataFormat
::
NHWC
);
auto
expected
=
net
.
CreateTensor
<
float
>
();
expected
->
Copy
(
*
net
.
GetOutput
(
"Output"
));
OpDefBuilder
(
"MVNorm"
,
"MVNormTest"
)
.
Input
(
"Input"
)
.
Output
(
"Output"
)
.
AddIntArg
(
"normalize_variance"
,
normalize_variance
)
.
AddIntArg
(
"across_channels"
,
across_channels
)
.
AddIntArg
(
"T"
,
static_cast
<
int
>
(
DataTypeToEnum
<
T
>::
value
))
.
Finalize
(
net
.
NewOperatorDef
());
net
.
RunOp
(
D
);
if
(
DataTypeToEnum
<
T
>::
value
==
DT_HALF
)
{
ExpectTensorNear
<
float
>
(
*
expected
,
*
net
.
GetOutput
(
"Output"
),
1e-2
,
1e-3
);
}
else
{
ExpectTensorNear
<
float
>
(
*
expected
,
*
net
.
GetOutput
(
"Output"
),
1e-5
);
}
}
}
// namespace
TEST_F
(
MVNormOpTest
,
SimpleTestMeanHalfOpenCL
)
{
TestMVNormRandom
<
DeviceType
::
GPU
,
half
>
({
1
,
1
,
5
,
12
},
false
,
true
);
}
TEST_F
(
MVNormOpTest
,
SimpleTestVarianceHalfOpenCL
)
{
TestMVNormRandom
<
DeviceType
::
GPU
,
half
>
({
1
,
1
,
5
,
12
},
true
,
true
);
}
}
// namespace test
}
// namespace ops
}
// namespace mace
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录