Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
magicwindyyd
mindspore
提交
3f3fb1f1
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看板
提交
3f3fb1f1
编写于
8月 31, 2020
作者:
X
xuanyue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix tflite and caffe single operator question
上级
8d419314
变更
64
隐藏空白更改
内联
并排
Showing
64 changed file
with
368 addition
and
107 deletion
+368
-107
mindspore/lite/schema/model.fbs
mindspore/lite/schema/model.fbs
+1
-0
mindspore/lite/schema/ops.fbs
mindspore/lite/schema/ops.fbs
+7
-0
mindspore/lite/src/ops/space_to_batch_nd.cc
mindspore/lite/src/ops/space_to_batch_nd.cc
+2
-2
mindspore/lite/src/populate_parameter.cc
mindspore/lite/src/populate_parameter.cc
+38
-25
mindspore/lite/tools/converter/parser/caffe/CMakeLists.txt
mindspore/lite/tools/converter/parser/caffe/CMakeLists.txt
+2
-1
mindspore/lite/tools/converter/parser/caffe/caffe_argmax_parser.cc
.../lite/tools/converter/parser/caffe/caffe_argmax_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_argmax_parser.h
...e/lite/tools/converter/parser/caffe/caffe_argmax_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_batchnorm_parser.cc
...te/tools/converter/parser/caffe/caffe_batchnorm_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_batchnorm_parser.h
...ite/tools/converter/parser/caffe/caffe_batchnorm_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_concat_parser.cc
.../lite/tools/converter/parser/caffe/caffe_concat_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_concat_parser.h
...e/lite/tools/converter/parser/caffe/caffe_concat_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_conv_base_parser.h
...ite/tools/converter/parser/caffe/caffe_conv_base_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_converter.cc
...pore/lite/tools/converter/parser/caffe/caffe_converter.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_converter.h
...spore/lite/tools/converter/parser/caffe/caffe_converter.h
+3
-3
mindspore/lite/tools/converter/parser/caffe/caffe_convolution_parser.cc
.../tools/converter/parser/caffe/caffe_convolution_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_convolution_parser.h
...e/tools/converter/parser/caffe/caffe_convolution_parser.h
+3
-3
mindspore/lite/tools/converter/parser/caffe/caffe_crop_parser.cc
...re/lite/tools/converter/parser/caffe/caffe_crop_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_crop_parser.h
...ore/lite/tools/converter/parser/caffe/caffe_crop_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_deconvolution_parser.cc
...ools/converter/parser/caffe/caffe_deconvolution_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_deconvolution_parser.h
...tools/converter/parser/caffe/caffe_deconvolution_parser.h
+3
-3
mindspore/lite/tools/converter/parser/caffe/caffe_eltwise_parser.cc
...lite/tools/converter/parser/caffe/caffe_eltwise_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_eltwise_parser.h
.../lite/tools/converter/parser/caffe/caffe_eltwise_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_exp_parser.cc
...ore/lite/tools/converter/parser/caffe/caffe_exp_parser.cc
+69
-0
mindspore/lite/tools/converter/parser/caffe/caffe_exp_parser.h
...pore/lite/tools/converter/parser/caffe/caffe_exp_parser.h
+38
-0
mindspore/lite/tools/converter/parser/caffe/caffe_flatten_parser.cc
...lite/tools/converter/parser/caffe/caffe_flatten_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_flatten_parser.h
.../lite/tools/converter/parser/caffe/caffe_flatten_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_innerproduct_parser.cc
...tools/converter/parser/caffe/caffe_innerproduct_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_innerproduct_parser.h
.../tools/converter/parser/caffe/caffe_innerproduct_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_inspector.cc
...pore/lite/tools/converter/parser/caffe/caffe_inspector.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_interp_parser.cc
.../lite/tools/converter/parser/caffe/caffe_interp_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_interp_parser.h
...e/lite/tools/converter/parser/caffe/caffe_interp_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_model_parser.cc
...e/lite/tools/converter/parser/caffe/caffe_model_parser.cc
+10
-1
mindspore/lite/tools/converter/parser/caffe/caffe_model_parser.h
...re/lite/tools/converter/parser/caffe/caffe_model_parser.h
+4
-1
mindspore/lite/tools/converter/parser/caffe/caffe_node_parser.cc
...re/lite/tools/converter/parser/caffe/caffe_node_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_node_parser.h
...ore/lite/tools/converter/parser/caffe/caffe_node_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_node_parser_registry.cc
...ools/converter/parser/caffe/caffe_node_parser_registry.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_node_parser_registry.h
...tools/converter/parser/caffe/caffe_node_parser_registry.h
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_permute_parser.cc
...lite/tools/converter/parser/caffe/caffe_permute_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_permute_parser.h
.../lite/tools/converter/parser/caffe/caffe_permute_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_pooling_parser.cc
...lite/tools/converter/parser/caffe/caffe_pooling_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_pooling_parser.h
.../lite/tools/converter/parser/caffe/caffe_pooling_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_power_parser.cc
...e/lite/tools/converter/parser/caffe/caffe_power_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_power_parser.h
...re/lite/tools/converter/parser/caffe/caffe_power_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_prelu_parser.cc
...e/lite/tools/converter/parser/caffe/caffe_prelu_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_prelu_parser.h
...re/lite/tools/converter/parser/caffe/caffe_prelu_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_relu6_parser.cc
...e/lite/tools/converter/parser/caffe/caffe_relu6_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_relu6_parser.h
...re/lite/tools/converter/parser/caffe/caffe_relu6_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_relu_parser.cc
...re/lite/tools/converter/parser/caffe/caffe_relu_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_relu_parser.h
...ore/lite/tools/converter/parser/caffe/caffe_relu_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_reshape_parser.cc
...lite/tools/converter/parser/caffe/caffe_reshape_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_reshape_parser.h
.../lite/tools/converter/parser/caffe/caffe_reshape_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_scale_parser.cc
...e/lite/tools/converter/parser/caffe/caffe_scale_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_scale_parser.h
...re/lite/tools/converter/parser/caffe/caffe_scale_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_sigmoid_parser.cc
...lite/tools/converter/parser/caffe/caffe_sigmoid_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_sigmoid_parser.h
.../lite/tools/converter/parser/caffe/caffe_sigmoid_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_softmax_parser.cc
...lite/tools/converter/parser/caffe/caffe_softmax_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_softmax_parser.h
.../lite/tools/converter/parser/caffe/caffe_softmax_parser.h
+2
-2
mindspore/lite/tools/converter/parser/caffe/caffe_tile_parser.cc
...re/lite/tools/converter/parser/caffe/caffe_tile_parser.cc
+1
-1
mindspore/lite/tools/converter/parser/caffe/caffe_tile_parser.h
...ore/lite/tools/converter/parser/caffe/caffe_tile_parser.h
+2
-2
mindspore/lite/tools/converter/parser/tflite/tflite_arithmetic_parser.cc
...tools/converter/parser/tflite/tflite_arithmetic_parser.cc
+3
-0
mindspore/lite/tools/converter/parser/tflite/tflite_custom_parser.cc
...ite/tools/converter/parser/tflite/tflite_custom_parser.cc
+67
-0
mindspore/lite/tools/converter/parser/tflite/tflite_custom_parser.h
...lite/tools/converter/parser/tflite/tflite_custom_parser.h
+43
-0
mindspore/lite/tools/converter/parser/tflite/tflite_sparse_to_dense_parser.cc
.../converter/parser/tflite/tflite_sparse_to_dense_parser.cc
+6
-0
mindspore/lite/tools/converter/parser/tflite/tflite_util.cc
mindspore/lite/tools/converter/parser/tflite/tflite_util.cc
+1
-0
未找到文件。
mindspore/lite/schema/model.fbs
浏览文件 @
3f3fb1f1
...
...
@@ -194,6 +194,7 @@ union PrimitiveType {
MakeTuple,
ToFormat,
Proposal,
Custom,
}
enum QuantType: int {
...
...
mindspore/lite/schema/ops.fbs
浏览文件 @
3f3fb1f1
...
...
@@ -472,6 +472,9 @@ table Neg {
}
table Exp {
base : float;
scale : float;
shift : float;
}
table Cos {
...
...
@@ -896,3 +899,7 @@ table Proposal {
post_nms_topn : int;
nms_thresh : float;
}
table Custom {
custom : [ubyte];
}
\ No newline at end of file
mindspore/lite/src/ops/space_to_batch_nd.cc
浏览文件 @
3f3fb1f1
...
...
@@ -53,7 +53,7 @@ std::vector<int> SpaceToBatchND::GetPaddings() const {
int
SpaceToBatchND
::
UnPackToFlatBuilder
(
const
schema
::
Primitive
*
primitive
,
flatbuffers
::
FlatBufferBuilder
*
fbb
)
{
MS_ASSERT
(
nullptr
!=
primitive
);
MS_ASSERT
(
nullptr
!=
fbb
);
auto
attr
=
primitive
->
value_as_SpaceToBatch
();
auto
attr
=
primitive
->
value_as_SpaceToBatch
ND
();
if
(
attr
==
nullptr
)
{
MS_LOG
(
ERROR
)
<<
"value_as_SpaceToBatch return nullptr"
;
return
RET_ERROR
;
...
...
@@ -71,7 +71,7 @@ int SpaceToBatchND::UnPackToFlatBuilder(const schema::Primitive *primitive, flat
}
}
auto
val_offset
=
schema
::
CreateSpaceToBatchDirect
(
*
fbb
,
&
blockShape
,
&
paddings
);
auto
prim_offset
=
schema
::
CreatePrimitive
(
*
fbb
,
schema
::
PrimitiveType_SpaceToBatch
,
val_offset
.
o
);
auto
prim_offset
=
schema
::
CreatePrimitive
(
*
fbb
,
schema
::
PrimitiveType_SpaceToBatch
ND
,
val_offset
.
o
);
fbb
->
Finish
(
prim_offset
);
return
RET_OK
;
}
...
...
mindspore/lite/src/populate_parameter.cc
浏览文件 @
3f3fb1f1
...
...
@@ -111,6 +111,7 @@
#include "src/ops/squared_difference.h"
#include "src/ops/ceil.h"
#include "src/ops/round.h"
#include "src/ops/sparse_to_dense.h"
#include "nnacl/op_base.h"
#include "nnacl/fp32/arg_min_max.h"
#include "nnacl/fp32/cast.h"
...
...
@@ -167,6 +168,7 @@
#include "nnacl/fp32/embedding_lookup.h"
#include "nnacl/fp32/elu.h"
#include "nnacl/leaky_relu_parameter.h"
#include "nnacl/sparse_to_dense.h"
namespace
mindspore
::
kernel
{
...
...
@@ -678,11 +680,11 @@ OpParameter *PopulateArithmetic(const mindspore::lite::PrimitiveC *primitive) {
break
;
}
auto
tmp_shape
=
((
lite
::
Arithmetic
*
)
primitive
)
->
InShape0
();
(
void
)
memcpy
(
arithmetic_param
->
in_shape0_
,
static_cast
<
void
*>
(
tmp_shape
.
data
()),
tmp_shape
.
size
()
*
sizeof
(
int
));
memcpy
(
arithmetic_param
->
in_shape0_
,
static_cast
<
void
*>
(
tmp_shape
.
data
()),
tmp_shape
.
size
()
*
sizeof
(
int
));
tmp_shape
=
((
lite
::
Arithmetic
*
)
primitive
)
->
InShape1
();
(
void
)
memcpy
(
arithmetic_param
->
in_shape1_
,
static_cast
<
void
*>
(
tmp_shape
.
data
()),
tmp_shape
.
size
()
*
sizeof
(
int
));
memcpy
(
arithmetic_param
->
in_shape1_
,
static_cast
<
void
*>
(
tmp_shape
.
data
()),
tmp_shape
.
size
()
*
sizeof
(
int
));
tmp_shape
=
((
lite
::
Arithmetic
*
)
primitive
)
->
OutputShape
();
(
void
)
memcpy
(
arithmetic_param
->
out_shape_
,
static_cast
<
void
*>
(
tmp_shape
.
data
()),
tmp_shape
.
size
()
*
sizeof
(
int
));
memcpy
(
arithmetic_param
->
out_shape_
,
static_cast
<
void
*>
(
tmp_shape
.
data
()),
tmp_shape
.
size
()
*
sizeof
(
int
));
return
reinterpret_cast
<
OpParameter
*>
(
arithmetic_param
);
}
...
...
@@ -1015,6 +1017,18 @@ OpParameter *PopulateSliceParameter(const mindspore::lite::PrimitiveC *primitive
return
reinterpret_cast
<
OpParameter
*>
(
slice_param
);
}
OpParameter
*
PopulateSparseToDenseParameter
(
const
mindspore
::
lite
::
PrimitiveC
*
primitive
)
{
SparseToDenseParameter
*
sparse_to_dense_param
=
reinterpret_cast
<
SparseToDenseParameter
*>
(
malloc
(
sizeof
(
SparseToDenseParameter
)));
if
(
sparse_to_dense_param
==
nullptr
)
{
MS_LOG
(
ERROR
)
<<
"malloc SparseToDenseParameter failed."
;
return
nullptr
;
}
memset
(
sparse_to_dense_param
,
0
,
sizeof
(
SparseToDenseParameter
));
sparse_to_dense_param
->
op_parameter_
.
type_
=
primitive
->
Type
();
return
reinterpret_cast
<
OpParameter
*>
(
sparse_to_dense_param
);
}
OpParameter
*
PopulateBroadcastToParameter
(
const
mindspore
::
lite
::
PrimitiveC
*
primitive
)
{
BroadcastToParameter
*
broadcast_param
=
reinterpret_cast
<
BroadcastToParameter
*>
(
malloc
(
sizeof
(
BroadcastToParameter
)));
...
...
@@ -1205,28 +1219,26 @@ OpParameter *PopulateSpaceToBatchParameter(const mindspore::lite::PrimitiveC *pr
}
memset
(
space_batch_param
,
0
,
sizeof
(
SpaceToBatchParameter
));
space_batch_param
->
op_parameter_
.
type_
=
primitive
->
Type
();
space_batch_param
->
op_parameter_
.
type_
=
primitive
->
Type
();
auto
block_sizes
=
((
mindspore
::
lite
::
SpaceToBatch
*
)
primitive
)
->
BlockSizes
();
(
void
)
memcpy
(
space_batch_param
->
block_sizes_
,
(
block_sizes
.
data
()),
block_sizes
.
size
()
*
sizeof
(
int
));
memcpy
(
space_batch_param
->
block_sizes_
,
(
block_sizes
.
data
()),
block_sizes
.
size
()
*
sizeof
(
int
));
auto
paddings
=
((
mindspore
::
lite
::
SpaceToBatch
*
)
primitive
)
->
Paddings
();
(
void
)
memcpy
(
space_batch_param
->
paddings_
,
(
paddings
.
data
()),
paddings
.
size
()
*
sizeof
(
int
));
memcpy
(
space_batch_param
->
paddings_
,
(
paddings
.
data
()),
paddings
.
size
()
*
sizeof
(
int
));
return
reinterpret_cast
<
OpParameter
*>
(
space_batch_param
);
}
OpParameter
*
PopulateSpaceToBatch
ParameterND
(
const
mindspore
::
lite
::
PrimitiveC
*
primitivec
)
{
auto
*
space_batch_param
=
new
(
std
::
nothrow
)
SpaceToBatchParameter
();
if
(
space_batch_param
==
nullptr
)
{
OpParameter
*
PopulateSpaceToBatch
NDParameter
(
const
mindspore
::
lite
::
PrimitiveC
*
primitive
)
{
auto
*
space_batch_param
_nd
=
new
(
std
::
nothrow
)
SpaceToBatchParameter
();
if
(
space_batch_param
_nd
==
nullptr
)
{
MS_LOG
(
ERROR
)
<<
"new SpaceToBatchParameter failed."
;
return
nullptr
;
}
mindspore
::
lite
::
SpaceToBatchND
*
primitive
=
(
mindspore
::
lite
::
SpaceToBatchND
*
)
primitivec
;
space_batch_param
->
op_parameter_
.
type_
=
primitive
->
Type
();
auto
block_sizes
=
primitive
->
GetBlockShape
();
(
void
)
memcpy
(
space_batch_param
->
block_sizes_
,
(
block_sizes
.
data
()),
block_sizes
.
size
()
*
sizeof
(
int
));
auto
paddings
=
primitive
->
GetPaddings
();
(
void
)
memcpy
(
space_batch_param
->
paddings_
,
(
paddings
.
data
()),
paddings
.
size
()
*
sizeof
(
int
));
return
reinterpret_cast
<
OpParameter
*>
(
space_batch_param
);
space_batch_param_nd
->
op_parameter_
.
type_
=
primitive
->
Type
();
auto
block_sizes
=
((
mindspore
::
lite
::
SpaceToBatchND
*
)
primitive
)
->
GetBlockShape
();
memcpy
(
space_batch_param_nd
->
block_sizes_
,
(
block_sizes
.
data
()),
block_sizes
.
size
()
*
sizeof
(
int
));
auto
paddings
=
((
mindspore
::
lite
::
SpaceToBatchND
*
)
primitive
)
->
GetPaddings
();
memcpy
(
space_batch_param_nd
->
paddings_
,
(
paddings
.
data
()),
paddings
.
size
()
*
sizeof
(
int
));
return
reinterpret_cast
<
OpParameter
*>
(
space_batch_param_nd
);
}
OpParameter
*
PopulateResizeParameter
(
const
mindspore
::
lite
::
PrimitiveC
*
primitive
)
{
...
...
@@ -1359,13 +1371,13 @@ OpParameter *PopulateStridedSliceParameter(const mindspore::lite::PrimitiveC *pr
auto
n_dims
=
((
lite
::
StridedSlice
*
)
primitive
)
->
NDims
();
strided_slice_param
->
num_axes_
=
n_dims
;
auto
begin
=
((
lite
::
StridedSlice
*
)
primitive
)
->
GetBegins
();
(
void
)
memcpy
(
strided_slice_param
->
begins_
,
(
begin
.
data
()),
begin
.
size
()
*
sizeof
(
int
));
memcpy
(
strided_slice_param
->
begins_
,
(
begin
.
data
()),
begin
.
size
()
*
sizeof
(
int
));
auto
end
=
((
lite
::
StridedSlice
*
)
primitive
)
->
GetEnds
();
(
void
)
memcpy
(
strided_slice_param
->
ends_
,
(
end
.
data
()),
end
.
size
()
*
sizeof
(
int
));
memcpy
(
strided_slice_param
->
ends_
,
(
end
.
data
()),
end
.
size
()
*
sizeof
(
int
));
auto
stride
=
((
lite
::
StridedSlice
*
)
primitive
)
->
GetStrides
();
(
void
)
memcpy
(
strided_slice_param
->
strides_
,
(
stride
.
data
()),
stride
.
size
()
*
sizeof
(
int
));
memcpy
(
strided_slice_param
->
strides_
,
(
stride
.
data
()),
stride
.
size
()
*
sizeof
(
int
));
auto
in_shape
=
((
lite
::
StridedSlice
*
)
primitive
)
->
GetInShape
();
(
void
)
memcpy
(
strided_slice_param
->
in_shape_
,
(
in_shape
.
data
()),
in_shape
.
size
()
*
sizeof
(
int
));
memcpy
(
strided_slice_param
->
in_shape_
,
(
in_shape
.
data
()),
in_shape
.
size
()
*
sizeof
(
int
));
return
reinterpret_cast
<
OpParameter
*>
(
strided_slice_param
);
}
...
...
@@ -1405,9 +1417,9 @@ OpParameter *PopulatePriorBoxParameter(const mindspore::lite::PrimitiveC *primit
return
nullptr
;
}
prior_box_param
->
max_sizes_size
=
prior_box_attr
->
GetMaxSizes
().
size
();
(
void
)
memcpy
(
prior_box_param
->
max_sizes
,
prior_box_attr
->
GetMaxSizes
().
data
(),
memcpy
(
prior_box_param
->
max_sizes
,
prior_box_attr
->
GetMaxSizes
().
data
(),
prior_box_attr
->
GetMaxSizes
().
size
()
*
sizeof
(
int32_t
));
(
void
)
memcpy
(
prior_box_param
->
min_sizes
,
prior_box_attr
->
GetMinSizes
().
data
(),
memcpy
(
prior_box_param
->
min_sizes
,
prior_box_attr
->
GetMinSizes
().
data
(),
prior_box_attr
->
GetMinSizes
().
size
()
*
sizeof
(
int32_t
));
if
(
prior_box_attr
->
GetAspectRatios
().
size
()
>
PRIOR_BOX_MAX_NUM
)
{
...
...
@@ -1417,7 +1429,7 @@ OpParameter *PopulatePriorBoxParameter(const mindspore::lite::PrimitiveC *primit
return
nullptr
;
}
prior_box_param
->
aspect_ratios_size
=
prior_box_attr
->
GetAspectRatios
().
size
();
(
void
)
memcpy
(
prior_box_param
->
aspect_ratios
,
prior_box_attr
->
GetAspectRatios
().
data
(),
memcpy
(
prior_box_param
->
aspect_ratios
,
prior_box_attr
->
GetAspectRatios
().
data
(),
prior_box_attr
->
GetAspectRatios
().
size
()
*
sizeof
(
float
));
if
(
prior_box_attr
->
GetVariances
().
size
()
!=
PRIOR_BOX_VAR_NUM
)
{
MS_LOG
(
ERROR
)
<<
"PriorBox variances size should be "
<<
PRIOR_BOX_VAR_NUM
<<
", got "
...
...
@@ -1425,7 +1437,7 @@ OpParameter *PopulatePriorBoxParameter(const mindspore::lite::PrimitiveC *primit
free
(
prior_box_param
);
return
nullptr
;
}
(
void
)
memcpy
(
prior_box_param
->
variances
,
prior_box_attr
->
GetVariances
().
data
(),
PRIOR_BOX_VAR_NUM
*
sizeof
(
float
));
memcpy
(
prior_box_param
->
variances
,
prior_box_attr
->
GetVariances
().
data
(),
PRIOR_BOX_VAR_NUM
*
sizeof
(
float
));
prior_box_param
->
flip
=
prior_box_attr
->
GetFlip
();
prior_box_param
->
clip
=
prior_box_attr
->
GetClip
();
prior_box_param
->
offset
=
prior_box_attr
->
GetOffset
();
...
...
@@ -1501,6 +1513,7 @@ OpParameter *PopulateEluParameter(const mindspore::lite::PrimitiveC *primitive)
}
PopulateParameterRegistry
::
PopulateParameterRegistry
()
{
populate_parameter_funcs_
[
schema
::
PrimitiveType_SparseToDense
]
=
PopulateSparseToDenseParameter
;
populate_parameter_funcs_
[
schema
::
PrimitiveType_SoftMax
]
=
PopulateSoftmaxParameter
;
populate_parameter_funcs_
[
schema
::
PrimitiveType_Activation
]
=
PopulateActivationParameter
;
populate_parameter_funcs_
[
schema
::
PrimitiveType_Conv2D
]
=
PopulateConvParameter
;
...
...
@@ -1578,7 +1591,7 @@ PopulateParameterRegistry::PopulateParameterRegistry() {
populate_parameter_funcs_
[
schema
::
PrimitiveType_BatchToSpace
]
=
PopulateBatchToSpaceParameter
;
populate_parameter_funcs_
[
schema
::
PrimitiveType_SpaceToDepth
]
=
PopulateSpaceToDepthParameter
;
populate_parameter_funcs_
[
schema
::
PrimitiveType_SpaceToBatch
]
=
PopulateSpaceToBatchParameter
;
populate_parameter_funcs_
[
schema
::
PrimitiveType_SpaceToBatchND
]
=
PopulateSpaceToBatch
ParameterND
;
populate_parameter_funcs_
[
schema
::
PrimitiveType_SpaceToBatchND
]
=
PopulateSpaceToBatch
NDParameter
;
populate_parameter_funcs_
[
schema
::
PrimitiveType_Crop
]
=
PopulateCropParameter
;
populate_parameter_funcs_
[
schema
::
PrimitiveType_Unsqueeze
]
=
PopulateUnsqueezeParameter
;
populate_parameter_funcs_
[
schema
::
PrimitiveType_Flatten
]
=
PopulateFlattenParameter
;
...
...
mindspore/lite/tools/converter/parser/caffe/CMakeLists.txt
浏览文件 @
3f3fb1f1
...
...
@@ -28,4 +28,5 @@ add_library(caffe_parser_mid OBJECT
${
CMAKE_CURRENT_SOURCE_DIR
}
/caffe_interp_parser.cc
${
CMAKE_CURRENT_SOURCE_DIR
}
/caffe_permute_parser.cc
${
CMAKE_CURRENT_SOURCE_DIR
}
/caffe_tile_parser.cc
${
CMAKE_CURRENT_SOURCE_DIR
}
/caffe_tanh_parser.cc
)
${
CMAKE_CURRENT_SOURCE_DIR
}
/caffe_tanh_parser.cc
${
CMAKE_CURRENT_SOURCE_DIR
}
/caffe_exp_parser.cc
)
mindspore/lite/tools/converter/parser/caffe/caffe_argmax_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_argmax_parser.h"
#include "tools/converter/parser/caffe/caffe_argmax_parser.h"
#include <memory>
namespace
mindspore
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_argmax_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_ARGMAX_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_batchnorm_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_batchnorm_parser.h"
#include "tools/converter/parser/caffe/caffe_batchnorm_parser.h"
#include <cmath>
#include <memory>
#include "tools/common/tensor_util.h"
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_batchnorm_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_BATCHNORM_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_concat_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_concat_parser.h"
#include "tools/converter/parser/caffe/caffe_concat_parser.h"
#include <memory>
const
int32_t
CONCAT_DEFAULT_AXIS
=
1
;
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_concat_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_CONCAT_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_conv_base_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -19,8 +19,8 @@
#include <string>
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_converter.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_converter.h"
#include "tools/converter/parser/caffe/caffe_converter.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_converter.h
浏览文件 @
3f3fb1f1
...
...
@@ -19,9 +19,9 @@
#include <string>
#include <memory>
#include "
mindspore/lite/
tools/converter/converter.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_model_parser.h"
#include "
mindspore/lite/
tools/converter/graphdef_transform.h"
#include "tools/converter/converter.h"
#include "tools/converter/parser/caffe/caffe_model_parser.h"
#include "tools/converter/graphdef_transform.h"
namespace
mindspore
::
lite
{
class
CaffeConverter
:
public
Converter
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_convolution_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_convolution_parser.h"
#include "tools/converter/parser/caffe/caffe_convolution_parser.h"
#include <memory>
namespace
mindspore
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_convolution_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,9 +18,9 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_CONVOLUTION_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_conv_base_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_conv_base_parser.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_crop_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_crop_parser.h"
#include "tools/converter/parser/caffe/caffe_crop_parser.h"
#include <memory>
const
int32_t
CROP_AXIS
=
2
;
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_crop_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_CROP_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_deconvolution_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_deconvolution_parser.h"
#include "tools/converter/parser/caffe/caffe_deconvolution_parser.h"
#include <memory>
namespace
mindspore
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_deconvolution_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,9 +18,9 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_DECONVOLUTION_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_conv_base_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_conv_base_parser.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_eltwise_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_eltwise_parser.h"
#include "tools/converter/parser/caffe/caffe_eltwise_parser.h"
#include <cmath>
#include <memory>
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_eltwise_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_ELTWISE_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_exp_parser.cc
0 → 100644
浏览文件 @
3f3fb1f1
/**
* Copyright 2020 Huawei Technologies Co., Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "tools/converter/parser/caffe/caffe_exp_parser.h"
#include <memory>
#include <vector>
namespace
mindspore
{
namespace
lite
{
STATUS
CaffeExpParser
::
Parse
(
const
caffe
::
LayerParameter
&
proto
,
const
caffe
::
LayerParameter
&
weight
,
schema
::
CNodeT
*
op
,
std
::
vector
<
schema
::
TensorT
*>
*
weightVec
)
{
MS_LOG
(
DEBUG
)
<<
"parse ExpParser"
;
if
(
op
==
nullptr
)
{
MS_LOG
(
ERROR
)
<<
"op is null"
;
return
RET_NULL_PTR
;
}
op
->
primitive
=
std
::
make_unique
<
schema
::
PrimitiveT
>
();
if
(
op
->
primitive
==
nullptr
)
{
MS_LOG
(
ERROR
)
<<
"op->primitive is null"
;
return
RET_NULL_PTR
;
}
std
::
unique_ptr
<
schema
::
ExpT
>
attr
=
std
::
make_unique
<
schema
::
ExpT
>
();
if
(
attr
==
nullptr
)
{
MS_LOG
(
ERROR
)
<<
"new op failed"
;
return
RET_NULL_PTR
;
}
const
caffe
::
ExpParameter
exp_param
=
proto
.
exp_param
();
if
(
exp_param
.
has_base
())
{
attr
->
base
=
exp_param
.
base
();
}
else
{
attr
->
base
=
-
1
;
// -1 represent base = e
}
if
(
exp_param
.
has_scale
())
{
attr
->
scale
=
exp_param
.
scale
();
}
else
{
attr
->
scale
=
1
;
}
if
(
exp_param
.
has_shift
())
{
attr
->
shift
=
exp_param
.
shift
();
}
else
{
attr
->
shift
=
0
;
}
op
->
primitive
->
value
.
type
=
schema
::
PrimitiveType_Exp
;
op
->
primitive
->
value
.
value
=
attr
.
release
();
return
RET_OK
;
}
CaffeNodeRegistrar
g_caffeExpParser
(
"Exp"
,
new
CaffeExpParser
());
}
// namespace lite
}
// namespace mindspore
mindspore/lite/tools/converter/parser/caffe/caffe_exp_parser.h
0 → 100644
浏览文件 @
3f3fb1f1
/**
* Copyright 2020 Huawei Technologies Co., Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_EXP_PARSER_H
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_EXP_PARSER_H
#include <vector>
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
class
CaffeExpParser
:
public
CaffeNodeParser
{
public:
CaffeExpParser
()
:
CaffeNodeParser
(
"exp"
)
{}
STATUS
Parse
(
const
caffe
::
LayerParameter
&
proto
,
const
caffe
::
LayerParameter
&
weight
,
schema
::
CNodeT
*
op
,
std
::
vector
<
schema
::
TensorT
*>
*
weightVec
)
override
;
};
}
// namespace lite
}
// namespace mindspore
#endif // MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_EXP_PARSER_H
mindspore/lite/tools/converter/parser/caffe/caffe_flatten_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_flatten_parser.h"
#include "tools/converter/parser/caffe/caffe_flatten_parser.h"
#include <memory>
namespace
mindspore
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_flatten_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_FLATTEN_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_innerproduct_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_innerproduct_parser.h"
#include "tools/converter/parser/caffe/caffe_innerproduct_parser.h"
#include <memory>
namespace
mindspore
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_innerproduct_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_INNERPRODUCT_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_inspector.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_inspector.h"
#include "tools/converter/parser/caffe/caffe_inspector.h"
#include "utils/log_adapter.h"
namespace
mindspore
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_interp_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_interp_parser.h"
#include "tools/converter/parser/caffe/caffe_interp_parser.h"
#include <memory>
namespace
mindspore
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_interp_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_INTERP_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_model_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -91,7 +91,12 @@ schema::MetaGraphT *CaffeModelParser::ParseToFb(const std::string &modelFile, co
STATUS
CaffeModelParser
::
SetOpInputIdx
(
const
caffe
::
LayerParameter
&
layer
,
schema
::
CNodeT
*
op
,
TensorCache
*
tensorCache
)
{
for
(
int
i
=
0
;
i
<
layer
.
bottom_size
();
i
++
)
{
int
index
=
tensorCache
->
FindTensor
(
layer
.
bottom
(
i
));
int
index
=
-
1
;
if
(
splitLayer
.
find
(
layer
.
bottom
(
i
))
!=
splitLayer
.
end
())
{
index
=
tensorCache
->
FindTensor
(
splitLayer
.
find
(
layer
.
bottom
(
i
))
->
second
);
}
else
{
index
=
tensorCache
->
FindTensor
(
layer
.
bottom
(
i
));
}
if
(
index
>=
0
)
{
op
->
inputIndex
.
emplace_back
(
index
);
}
else
{
...
...
@@ -193,6 +198,10 @@ STATUS CaffeModelParser::ParseLayer(const caffe::NetParameter &proto, const caff
std
::
unique_ptr
<
schema
::
CNodeT
>
op
=
std
::
make_unique
<
schema
::
CNodeT
>
();
op
->
name
=
layer
.
name
();
if
(
layer
.
type
()
==
"Split"
)
{
splitLayer
.
emplace
(
layer
.
name
(),
layer
.
bottom
(
0
));
continue
;
}
auto
status
=
SetOpInputIdx
(
layer
,
op
.
get
(),
tensorCache
);
if
(
status
!=
RET_OK
)
{
MS_LOG
(
ERROR
)
<<
"Set Op "
<<
layer
.
name
()
<<
" Input Index Failed!"
;
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_model_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -21,7 +21,8 @@
#include <vector>
#include <memory>
#include <set>
#include "mindspore/lite/tools/converter/model_parser.h"
#include <unordered_map>
#include "tools/converter/model_parser.h"
#include "tools/converter/parser/caffe/caffe.pb.h"
#include "tools/common/tensor_util.h"
...
...
@@ -55,6 +56,8 @@ class CaffeModelParser : public ModelParser {
STATUS
GetModelInput
(
const
caffe
::
NetParameter
&
proto
,
TensorCache
*
tensorCache
);
static
const
std
::
set
<
std
::
string
>
skipedLayerType
;
std
::
unordered_map
<
std
::
string
,
std
::
string
>
splitLayer
;
};
}
// namespace lite
}
// namespace mindspore
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_node_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include <memory>
#include "securec/include/securec.h"
#include "ir/dtype/type_id.h"
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_node_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -20,9 +20,9 @@
#include <string>
#include <vector>
#include "google/protobuf/message.h"
#include "
mindspore/lite/
schema/inner/model_generated.h"
#include "schema/inner/model_generated.h"
#include "tools/converter/parser/caffe/caffe.pb.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "include/errorcode.h"
#include "utils/log_adapter.h"
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_node_parser_registry.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_node_parser_registry.h
浏览文件 @
3f3fb1f1
...
...
@@ -19,7 +19,7 @@
#include <string>
#include <unordered_map>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe.pb.h"
namespace
mindspore
::
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_permute_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_permute_parser.h"
#include "tools/converter/parser/caffe/caffe_permute_parser.h"
#include <memory>
namespace
mindspore
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_permute_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_PERMUTE_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_pooling_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_pooling_parser.h"
#include "tools/converter/parser/caffe/caffe_pooling_parser.h"
#include <memory>
const
uint32_t
INNERPRODUCT_WINDOW_DEFAULT_VALUE
=
0
;
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_pooling_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_POOLING_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_power_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_power_parser.h"
#include "tools/converter/parser/caffe/caffe_power_parser.h"
#include <memory>
#include <vector>
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_power_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_POWER_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_prelu_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_prelu_parser.h"
#include "tools/converter/parser/caffe/caffe_prelu_parser.h"
#include <memory>
namespace
mindspore
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_prelu_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_PRELU_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_relu6_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_relu6_parser.h"
#include "tools/converter/parser/caffe/caffe_relu6_parser.h"
#include <memory>
namespace
mindspore
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_relu6_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -17,8 +17,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_RELU6_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_relu_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_relu_parser.h"
#include "tools/converter/parser/caffe/caffe_relu_parser.h"
#include <memory>
namespace
mindspore
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_relu_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_RELU_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_reshape_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_reshape_parser.h"
#include "tools/converter/parser/caffe/caffe_reshape_parser.h"
#include <memory>
namespace
mindspore
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_reshape_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_RESHAPE_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_scale_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_scale_parser.h"
#include "tools/converter/parser/caffe/caffe_scale_parser.h"
#include <memory>
const
int32_t
NCHW_DIM_C
=
1
;
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_scale_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_SCALE_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_sigmoid_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_sigmoid_parser.h"
#include "tools/converter/parser/caffe/caffe_sigmoid_parser.h"
#include <memory>
namespace
mindspore
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_sigmoid_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_SIGMOID_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_softmax_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_softmax_parser.h"
#include "tools/converter/parser/caffe/caffe_softmax_parser.h"
#include <memory>
static
const
int32_t
CAFFE_SOFTMAX_DEFAULT_AXIS
=
1
;
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_softmax_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_SOFTMAX_PARSER_H_
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_tile_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_tile_parser.h"
#include "tools/converter/parser/caffe/caffe_tile_parser.h"
#include <memory>
#include <vector>
...
...
mindspore/lite/tools/converter/parser/caffe/caffe_tile_parser.h
浏览文件 @
3f3fb1f1
...
...
@@ -18,8 +18,8 @@
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_TILE_PARSER_H
#include <vector>
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser.h"
#include "
mindspore/lite/
tools/converter/parser/caffe/caffe_node_parser_registry.h"
#include "tools/converter/parser/caffe/caffe_node_parser.h"
#include "tools/converter/parser/caffe/caffe_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
...
...
mindspore/lite/tools/converter/parser/tflite/tflite_arithmetic_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -212,6 +212,9 @@ STATUS TfliteSingleInputOpParser::Parse(const std::unique_ptr<tflite::OperatorT>
}
else
if
(
std
::
strcmp
(
node_name
,
"Exp"
)
==
0
)
{
MS_LOG
(
DEBUG
)
<<
"parse TfliteExpParser"
;
auto
attr
=
std
::
make_unique
<
schema
::
ExpT
>
();
attr
->
base
=
-
1
;
// -1 represent base = e
attr
->
scale
=
1
;
attr
->
shift
=
0
;
if
(
attr
==
nullptr
)
{
MS_LOG
(
ERROR
)
<<
"new op failed"
;
return
RET_NULL_PTR
;
...
...
mindspore/lite/tools/converter/parser/tflite/tflite_custom_parser.cc
0 → 100644
浏览文件 @
3f3fb1f1
/**
* Copyright 2020 Huawei Technologies Co., Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "tools/converter/parser/tflite/tflite_custom_parser.h"
#include <vector>
#include <memory>
#include <map>
namespace
mindspore
{
namespace
lite
{
STATUS
TfliteCustomParser
::
Parse
(
const
std
::
unique_ptr
<
tflite
::
OperatorT
>
&
tflite_op
,
const
std
::
vector
<
std
::
unique_ptr
<
tflite
::
TensorT
>>
&
tflite_tensors
,
const
std
::
vector
<
std
::
unique_ptr
<
tflite
::
BufferT
>>
&
tflite_model_buffer
,
schema
::
CNodeT
*
op
,
std
::
vector
<
int32_t
>
*
tensors_id
,
std
::
vector
<
schema
::
Format
>
*
tensors_format
,
std
::
map
<
int
,
int
>
*
tensors_id_map
)
{
MS_LOG
(
DEBUG
)
<<
"parse TfliteCustomParser"
;
if
(
op
==
nullptr
)
{
MS_LOG
(
ERROR
)
<<
"op is null"
;
return
RET_NULL_PTR
;
}
op
->
primitive
=
std
::
make_unique
<
schema
::
PrimitiveT
>
();
if
(
op
->
primitive
==
nullptr
)
{
MS_LOG
(
ERROR
)
<<
"op->primitive is null"
;
return
RET_NULL_PTR
;
}
std
::
unique_ptr
<
schema
::
CustomT
>
attr
=
std
::
make_unique
<
schema
::
CustomT
>
();
if
(
attr
==
nullptr
)
{
MS_LOG
(
ERROR
)
<<
"new op failed"
;
return
RET_NULL_PTR
;
}
const
auto
&
custom_attr
=
tflite_op
->
custom_options
;
attr
->
custom
=
custom_attr
;
op
->
primitive
->
value
.
type
=
schema
::
PrimitiveType_Custom
;
op
->
primitive
->
value
.
value
=
attr
.
release
();
for
(
size_t
i
=
0
;
i
<
tflite_op
->
inputs
.
size
();
++
i
)
{
AddOpInput
(
op
,
tensors_id
,
tensors_format
,
tensors_id_map
,
tflite_op
->
inputs
[
i
],
tensors_id
->
size
(),
tflite_tensors
.
size
(),
schema
::
Format_NHWC
);
}
for
(
size_t
i
=
0
;
i
<
tflite_op
->
outputs
.
size
();
++
i
)
{
AddOpOutput
(
op
,
tensors_id
,
tensors_format
,
tensors_id_map
,
tflite_op
->
outputs
[
i
],
tensors_id
->
size
(),
tflite_tensors
.
size
(),
schema
::
Format_NHWC
);
}
return
RET_OK
;
}
TfliteNodeRegister
g_tfliteCustomParser
(
"Custom"
,
new
TfliteCustomParser
());
}
// namespace lite
}
// namespace mindspore
mindspore/lite/tools/converter/parser/tflite/tflite_custom_parser.h
0 → 100644
浏览文件 @
3f3fb1f1
/**
* Copyright 2020 Huawei Technologies Co., Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_TFLITE_CUSTOM_PARSER_H
#define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_TFLITE_CUSTOM_PARSER_H
#include <memory>
#include <vector>
#include <map>
#include "tools/converter/parser/tflite/tflite_node_parser.h"
#include "tools/converter/parser/tflite/tflite_node_parser_registry.h"
namespace
mindspore
{
namespace
lite
{
class
TfliteCustomParser
:
public
TfliteNodeParser
{
public:
TfliteCustomParser
()
:
TfliteNodeParser
(
"Custom"
)
{}
STATUS
Parse
(
const
std
::
unique_ptr
<
tflite
::
OperatorT
>
&
tflite_op
,
const
std
::
vector
<
std
::
unique_ptr
<
tflite
::
TensorT
>>
&
tflite_tensors
,
const
std
::
vector
<
std
::
unique_ptr
<
tflite
::
BufferT
>>
&
tflite_model_buffer
,
schema
::
CNodeT
*
op
,
std
::
vector
<
int32_t
>
*
tensors_id
,
std
::
vector
<
schema
::
Format
>
*
tensors_format
,
std
::
map
<
int
,
int
>
*
tensors_id_map
)
override
;
};
}
// namespace lite
}
// namespace mindspore
#endif // MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_TFLITE_CUSTOM_PARSER_H
mindspore/lite/tools/converter/parser/tflite/tflite_sparse_to_dense_parser.cc
浏览文件 @
3f3fb1f1
...
...
@@ -66,6 +66,12 @@ STATUS TfliteSparseToDenseParser::Parse(const std::unique_ptr<tflite::OperatorT>
AddOpInput
(
op
,
tensors_id
,
tensors_format
,
tensors_id_map
,
tflite_op
->
inputs
[
0
],
tensors_id
->
size
(),
tflite_tensors
.
size
(),
schema
::
Format_NHWC
);
AddOpInput
(
op
,
tensors_id
,
tensors_format
,
tensors_id_map
,
tflite_op
->
inputs
[
1
],
tensors_id
->
size
(),
tflite_tensors
.
size
(),
schema
::
Format_NHWC
);
AddOpInput
(
op
,
tensors_id
,
tensors_format
,
tensors_id_map
,
tflite_op
->
inputs
[
2
],
tensors_id
->
size
(),
tflite_tensors
.
size
(),
schema
::
Format_NHWC
);
AddOpInput
(
op
,
tensors_id
,
tensors_format
,
tensors_id_map
,
tflite_op
->
inputs
[
3
],
tensors_id
->
size
(),
tflite_tensors
.
size
(),
schema
::
Format_NHWC
);
AddOpOutput
(
op
,
tensors_id
,
tensors_format
,
tensors_id_map
,
tflite_op
->
outputs
[
0
],
tensors_id
->
size
(),
tflite_tensors
.
size
(),
schema
::
Format_NHWC
);
return
RET_OK
;
...
...
mindspore/lite/tools/converter/parser/tflite/tflite_util.cc
浏览文件 @
3f3fb1f1
...
...
@@ -116,6 +116,7 @@ std::map<tflite::BuiltinOperator, std::string> tfMsOpTypeMap{
{
tflite
::
BuiltinOperator_REVERSE_SEQUENCE
,
"ReverseSequence"
},
{
tflite
::
BuiltinOperator_UNIQUE
,
"Unique"
},
{
tflite
::
BuiltinOperator_UNPACK
,
"Unstack"
},
{
tflite
::
BuiltinOperator_CUSTOM
,
"Custom"
},
};
std
::
map
<
tflite
::
ActivationFunctionType
,
schema
::
ActivationType
>
tfMsActivationFunctionMap
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录