Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Xiaomi
Mace
提交
a3075116
Mace
项目概览
Xiaomi
/
Mace
通知
106
Star
40
Fork
27
代码
文件
提交
分支
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,发现更多精彩内容 >>
提交
a3075116
编写于
8月 07, 2018
作者:
李
李寅
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'support-tf-split' into 'master'
Support tensorflow split op. See merge request !710
上级
eddba255
284e8a99
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
26 addition
and
9 deletion
+26
-9
mace/python/tools/converter_tool/tensorflow_converter.py
mace/python/tools/converter_tool/tensorflow_converter.py
+20
-0
mace/python/tools/model_header.jinja2
mace/python/tools/model_header.jinja2
+6
-9
未找到文件。
mace/python/tools/converter_tool/tensorflow_converter.py
浏览文件 @
a3075116
...
@@ -96,6 +96,7 @@ TFSupportedOps = [
...
@@ -96,6 +96,7 @@ TFSupportedOps = [
'Pack'
,
'Pack'
,
'Cast'
,
'Cast'
,
'ArgMax'
,
'ArgMax'
,
'Split'
,
]
]
TFOpType
=
Enum
(
'TFOpType'
,
[(
op
,
op
)
for
op
in
TFSupportedOps
],
type
=
str
)
TFOpType
=
Enum
(
'TFOpType'
,
[(
op
,
op
)
for
op
in
TFSupportedOps
],
type
=
str
)
...
@@ -192,6 +193,7 @@ class TensorflowConverter(base_converter.ConverterInterface):
...
@@ -192,6 +193,7 @@ class TensorflowConverter(base_converter.ConverterInterface):
TFOpType
.
Stack
.
name
:
self
.
convert_stack
,
TFOpType
.
Stack
.
name
:
self
.
convert_stack
,
TFOpType
.
Cast
.
name
:
self
.
convert_cast
,
TFOpType
.
Cast
.
name
:
self
.
convert_cast
,
TFOpType
.
ArgMax
.
name
:
self
.
convert_argmax
,
TFOpType
.
ArgMax
.
name
:
self
.
convert_argmax
,
TFOpType
.
Split
.
name
:
self
.
convert_split
,
}
}
self
.
_option
=
option
self
.
_option
=
option
self
.
_mace_net_def
=
mace_pb2
.
NetDef
()
self
.
_mace_net_def
=
mace_pb2
.
NetDef
()
...
@@ -759,3 +761,21 @@ class TensorflowConverter(base_converter.ConverterInterface):
...
@@ -759,3 +761,21 @@ class TensorflowConverter(base_converter.ConverterInterface):
op
=
self
.
convert_general_op
(
tf_op
)
op
=
self
.
convert_general_op
(
tf_op
)
op
.
type
=
MaceOp
.
ArgMax
.
name
op
.
type
=
MaceOp
.
ArgMax
.
name
op
.
output_type
.
extend
([
mace_pb2
.
DT_INT32
])
op
.
output_type
.
extend
([
mace_pb2
.
DT_INT32
])
def
convert_split
(
self
,
tf_op
):
# inputs: [dim, input]
axis
=
tf_op
.
inputs
[
0
].
eval
().
astype
(
np
.
int32
)
axis
=
len
(
op
.
output_shape
[
0
].
dims
)
+
axis
if
axis
<
0
else
axis
mace_check
(
axis
==
3
,
'Split with %d axis only support'
%
axis
)
input_shape
=
self
.
infer_tensor_shape
(
tf_op
.
inputs
[
1
])
mace_check
(
len
(
input_shape
)
==
4
and
(
input_shape
[
3
]
%
4
==
0
),
"The input's 4th dimension should be a multiple of 4"
)
op
=
self
.
convert_general_op
(
tf_op
)
op
.
type
=
MaceOp
.
Slice
.
name
del
op
.
input
[
0
]
axis_arg
=
op
.
arg
.
add
()
axis_arg
.
name
=
MaceKeyword
.
mace_axis_str
axis_arg
.
i
=
axis
self
.
_skip_tensor
.
add
(
tf_op
.
inputs
[
0
].
name
)
mace/python/tools/model_header.jinja2
浏览文件 @
a3075116
...
@@ -25,17 +25,14 @@ namespace mace {
...
@@ -25,17 +25,14 @@ namespace mace {
namespace {{tag}} {
namespace {{tag}} {
const unsigned char *LoadModelData(const std::string &model_data_file
);
extern const unsigned char *LoadModelData(
);
const std::shared_ptr<NetDef> CreateNet();
extern
const std::shared_ptr<NetDef> CreateNet();
const std::string ModelName();
extern const std::string ModelName();
extern const std::string ModelChecksum();
const std::string ModelChecksum();
extern const std::string ModelBuildTime();
extern const std::string ModelBuildOptions();
const std::string ModelBuildTime();
const std::string ModelBuildOptions();
} // namespace {{ tag }}
} // namespace {{ tag }}
} // namespace mace
} // namespace mace
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录