diff --git a/mindspore/lite/schema/model.fbs b/mindspore/lite/schema/model.fbs index 4031af06f541f7fdbf46353b28430b898272f2dc..e3d33eb0b7ab868446ea3d83e83f43ebbfc4ef2c 100644 --- a/mindspore/lite/schema/model.fbs +++ b/mindspore/lite/schema/model.fbs @@ -194,6 +194,7 @@ union PrimitiveType { MakeTuple, ToFormat, Proposal, + Custom, } enum QuantType: int { diff --git a/mindspore/lite/schema/ops.fbs b/mindspore/lite/schema/ops.fbs index 592b23f964d45a1e2d2cb07bbd47b7c33bb20df8..752d018d4fcbd53ae5ee1951934a4816a7524af5 100644 --- a/mindspore/lite/schema/ops.fbs +++ b/mindspore/lite/schema/ops.fbs @@ -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 diff --git a/mindspore/lite/src/ops/space_to_batch_nd.cc b/mindspore/lite/src/ops/space_to_batch_nd.cc index 23d5bfd18e3d2195083a3d5aaa74edd205ec8e04..2c2aadd39e11a54791c335107a74ffeaf8882e1e 100644 --- a/mindspore/lite/src/ops/space_to_batch_nd.cc +++ b/mindspore/lite/src/ops/space_to_batch_nd.cc @@ -53,7 +53,7 @@ std::vector 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_SpaceToBatchND(); 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_SpaceToBatchND, val_offset.o); fbb->Finish(prim_offset); return RET_OK; } diff --git a/mindspore/lite/src/populate_parameter.cc b/mindspore/lite/src/populate_parameter.cc index b1bb2e7e61e8d0b29785d80d7c9e047167045135..3173e469d2892686d12fe94792c74d21f8e7b18a 100644 --- a/mindspore/lite/src/populate_parameter.cc +++ b/mindspore/lite/src/populate_parameter.cc @@ -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(tmp_shape.data()), tmp_shape.size() * sizeof(int)); + memcpy(arithmetic_param->in_shape0_, static_cast(tmp_shape.data()), tmp_shape.size() * sizeof(int)); tmp_shape = ((lite::Arithmetic *)primitive)->InShape1(); - (void)memcpy(arithmetic_param->in_shape1_, static_cast(tmp_shape.data()), tmp_shape.size() * sizeof(int)); + memcpy(arithmetic_param->in_shape1_, static_cast(tmp_shape.data()), tmp_shape.size() * sizeof(int)); tmp_shape = ((lite::Arithmetic *)primitive)->OutputShape(); - (void)memcpy(arithmetic_param->out_shape_, static_cast(tmp_shape.data()), tmp_shape.size() * sizeof(int)); + memcpy(arithmetic_param->out_shape_, static_cast(tmp_shape.data()), tmp_shape.size() * sizeof(int)); return reinterpret_cast(arithmetic_param); } @@ -1015,6 +1017,18 @@ OpParameter *PopulateSliceParameter(const mindspore::lite::PrimitiveC *primitive return reinterpret_cast(slice_param); } +OpParameter *PopulateSparseToDenseParameter(const mindspore::lite::PrimitiveC *primitive) { + SparseToDenseParameter *sparse_to_dense_param = + reinterpret_cast(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(sparse_to_dense_param); +} + OpParameter *PopulateBroadcastToParameter(const mindspore::lite::PrimitiveC *primitive) { BroadcastToParameter *broadcast_param = reinterpret_cast(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(space_batch_param); } -OpParameter *PopulateSpaceToBatchParameterND(const mindspore::lite::PrimitiveC *primitivec) { - auto *space_batch_param = new (std::nothrow) SpaceToBatchParameter(); - if (space_batch_param == nullptr) { +OpParameter *PopulateSpaceToBatchNDParameter(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(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(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(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] = PopulateSpaceToBatchParameterND; + populate_parameter_funcs_[schema::PrimitiveType_SpaceToBatchND] = PopulateSpaceToBatchNDParameter; populate_parameter_funcs_[schema::PrimitiveType_Crop] = PopulateCropParameter; populate_parameter_funcs_[schema::PrimitiveType_Unsqueeze] = PopulateUnsqueezeParameter; populate_parameter_funcs_[schema::PrimitiveType_Flatten] = PopulateFlattenParameter; diff --git a/mindspore/lite/tools/converter/parser/caffe/CMakeLists.txt b/mindspore/lite/tools/converter/parser/caffe/CMakeLists.txt index bf27a111ba9e3266802a9d111895202bbbf6aff2..2faf790b21045898f6b381c49250e54777ac03eb 100644 --- a/mindspore/lite/tools/converter/parser/caffe/CMakeLists.txt +++ b/mindspore/lite/tools/converter/parser/caffe/CMakeLists.txt @@ -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) diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_argmax_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_argmax_parser.cc index a4238cc6721bcd339439dc95ca9dbaf2a89c5a8d..8aa275c0377d2693cc7ef10eaa7fe1957612313b 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_argmax_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_argmax_parser.cc @@ -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 namespace mindspore { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_argmax_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_argmax_parser.h index 7517f6f682267e758eae91389f845e401f043e49..5b1b9fe9439b6bfb7f16520c06f9b78878c95c51 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_argmax_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_argmax_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_ARGMAX_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_batchnorm_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_batchnorm_parser.cc index fad6d8577fe9380d4ae31d75a26720f264570609..b859c8464efe925eb0a7732fea217e38eaf17fae 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_batchnorm_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_batchnorm_parser.cc @@ -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 #include #include "tools/common/tensor_util.h" diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_batchnorm_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_batchnorm_parser.h index 9fb5d9828b97b505e4d0f4ca7bdb6aaa65de8d92..83142963f2f5d3fa8c742687f3f310e7349aa157 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_batchnorm_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_batchnorm_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_BATCHNORM_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_concat_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_concat_parser.cc index 01c407683c14b46a76af6ea8aa91af47df5d5d8e..009c46a7c2bdfed4fc57811af39bf45f97547a71 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_concat_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_concat_parser.cc @@ -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 const int32_t CONCAT_DEFAULT_AXIS = 1; diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_concat_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_concat_parser.h index 19dafae2ec15e9ad07b6b33ff1a840761f3a69d3..f0cb018dcb2db1bf36714dcd9020a9cb8d0d6990 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_concat_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_concat_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_CONCAT_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_conv_base_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_conv_base_parser.h index e0919e7ca59c064ae1c7cd0a18a8dbe5f81cd307..7cdfe13d46e4a0113cde31abf865466442e40ffa 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_conv_base_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_conv_base_parser.h @@ -19,8 +19,8 @@ #include #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_converter.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_converter.cc index 0a87989886f244ca2a9f26c93e45e2b1053c6c9e..37e51bce7bf92921988316a6d742ec2cf1a44d49 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_converter.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_converter.cc @@ -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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_converter.h b/mindspore/lite/tools/converter/parser/caffe/caffe_converter.h index db024b23f05d72ca701fd40dd7d1d75d94fdbc73..2f6ea10d75bace9c5d6a8af82ae1daf03f76ae59 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_converter.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_converter.h @@ -19,9 +19,9 @@ #include #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_convolution_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_convolution_parser.cc index 96f546e44f4d26e3d601ea5100d177e351f8b148..ec94c2f4327bfb4945408036fff02ced798d79cd 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_convolution_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_convolution_parser.cc @@ -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 namespace mindspore { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_convolution_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_convolution_parser.h index 48e723411bd8f86f2f6274c63c0aef82adedbda8..7baf194c978d7f892c9a3ed4f33e0e4118902849 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_convolution_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_convolution_parser.h @@ -18,9 +18,9 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_CONVOLUTION_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_crop_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_crop_parser.cc index f4b566eae1219fe793d0dda4f30bba10993ee648..e5a0cbefdba06e41cafab29e13398e1f0c59e74f 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_crop_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_crop_parser.cc @@ -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 const int32_t CROP_AXIS = 2; diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_crop_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_crop_parser.h index e2f92cf5d14358edf7d102f7db95c801c43c58be..d64f8534f6480be2af8705bca7b0972af6563a95 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_crop_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_crop_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_CROP_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_deconvolution_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_deconvolution_parser.cc index 5de6fc044d1a1a38f6f165dd6a30527c630b38d1..d46253b3f18b2b05765793109fe39d6fc46e9222 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_deconvolution_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_deconvolution_parser.cc @@ -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 namespace mindspore { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_deconvolution_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_deconvolution_parser.h index dd9df3ba2366df3e78ce0279f273f19fea6d7303..fea07878b9e6d1d46a9a530888a3695f9b2c854f 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_deconvolution_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_deconvolution_parser.h @@ -18,9 +18,9 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_DECONVOLUTION_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_eltwise_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_eltwise_parser.cc index bfbb4ee767b8e90e6ded93a0719c35c107f6dbce..37689206bc210fc875490ccb86d6888f4982abff 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_eltwise_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_eltwise_parser.cc @@ -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 #include diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_eltwise_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_eltwise_parser.h index 0942154e2ea8cd825669d995cc80a12ac46dfe65..8d0d2aed7cb6b91ce4d0405903e3d47c3107ea79 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_eltwise_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_eltwise_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_ELTWISE_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_exp_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_exp_parser.cc new file mode 100644 index 0000000000000000000000000000000000000000..e39d400f4bd65b60fca494469918c16e7bb79482 --- /dev/null +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_exp_parser.cc @@ -0,0 +1,69 @@ +/** + * 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 +#include + +namespace mindspore { +namespace lite { +STATUS CaffeExpParser::Parse(const caffe::LayerParameter &proto, + const caffe::LayerParameter &weight, + schema::CNodeT *op, + std::vector *weightVec) { + MS_LOG(DEBUG) << "parse ExpParser"; + if (op == nullptr) { + MS_LOG(ERROR) << "op is null"; + return RET_NULL_PTR; + } + op->primitive = std::make_unique(); + if (op->primitive == nullptr) { + MS_LOG(ERROR) << "op->primitive is null"; + return RET_NULL_PTR; + } + + std::unique_ptr attr = std::make_unique(); + 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 + diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_exp_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_exp_parser.h new file mode 100644 index 0000000000000000000000000000000000000000..ac6a12cfeeb588c39d9def5c725055ba7963aed9 --- /dev/null +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_exp_parser.h @@ -0,0 +1,38 @@ +/** + * 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 +#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 *weightVec) override; +}; +} // namespace lite +} // namespace mindspore + +#endif // MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_EXP_PARSER_H diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_flatten_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_flatten_parser.cc index 6e4b1d7c11d94ae5b3ba26b0238205a49a014b18..4eb0cb78bdbb3d40b11144c1e8ab6a2fb181cc87 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_flatten_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_flatten_parser.cc @@ -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 namespace mindspore { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_flatten_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_flatten_parser.h index e1fb48f6e333af4a4a73fb551291be7752c985b8..333caaf6f32643e74a14d311487317f44f5f13f1 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_flatten_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_flatten_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_FLATTEN_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_innerproduct_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_innerproduct_parser.cc index cd968a257131bd0a7ae2a5334ba583981d3b1b33..2ba0588e31dd6d6ad39b8cd2b5f3124d3973f046 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_innerproduct_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_innerproduct_parser.cc @@ -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 namespace mindspore { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_innerproduct_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_innerproduct_parser.h index 375d6db03550f533c362037440a15002efe52771..c4ed3e7feee87ec4d4061048310e836d8d127831 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_innerproduct_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_innerproduct_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_INNERPRODUCT_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_inspector.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_inspector.cc index 394686e6cf0123c19fbc2fd692121ef8222a5ca6..77652fdfbfd006b9bbadf8f1e3ce9cb63d40df62 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_inspector.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_inspector.cc @@ -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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_interp_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_interp_parser.cc index 5d87ad5183ee52e2b8f0b9930d9b20f8ba4506a1..e7bb9aaeed04f73ed4c6e53e9deb1f8bd7f5788b 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_interp_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_interp_parser.cc @@ -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 namespace mindspore { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_interp_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_interp_parser.h index f8e390741893f6cc1878eb036d330a600c0cce6b..18ab4e45718ff631015ed9770480e54e893879b7 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_interp_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_interp_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_INTERP_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_model_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_model_parser.cc index 5f75fc1ee49617ac19a174d738600e0eb832cb7b..67a1d9cf840f41c9253a9ad4007d2749231fde7e 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_model_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_model_parser.cc @@ -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 op = std::make_unique(); 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!"; diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_model_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_model_parser.h index ffea8e6aaa882d18647cf99ae532e96520824c27..84b318b9c58fe8ec02bbc8562e9dcaa662781464 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_model_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_model_parser.h @@ -21,7 +21,8 @@ #include #include #include -#include "mindspore/lite/tools/converter/model_parser.h" +#include +#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 skipedLayerType; + + std::unordered_map splitLayer; }; } // namespace lite } // namespace mindspore diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_node_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_node_parser.cc index 268f165e80dfa1a9dc893721c1b0efc9d07d28f1..9cc92cb9597007619a8556b0c5ac1d572f3f07b6 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_node_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_node_parser.cc @@ -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 #include "securec/include/securec.h" #include "ir/dtype/type_id.h" diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_node_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_node_parser.h index 59dba278fd0d2582df3e87775be065f176057714..f3320f77f02189bc13a5d8eaa76023f400c3359c 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_node_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_node_parser.h @@ -20,9 +20,9 @@ #include #include #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" diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_node_parser_registry.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_node_parser_registry.cc index 32afafd2c52b2940727ecdcbe5b1e692e257a12c..550ab3c91764fddca1ee4c43574898826adfa737 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_node_parser_registry.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_node_parser_registry.cc @@ -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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_node_parser_registry.h b/mindspore/lite/tools/converter/parser/caffe/caffe_node_parser_registry.h index b8cdf0741a279ea4a32fd1e4f9401ac7040cf903..000ddff4ce1de631d94503432900b5b921c70912 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_node_parser_registry.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_node_parser_registry.h @@ -19,7 +19,7 @@ #include #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_permute_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_permute_parser.cc index 64598a29e26aeb99cc753a3b7ca91f1bacbcceef..2e5ec46e918c0cbc515d9c46ba3a2221aa9620eb 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_permute_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_permute_parser.cc @@ -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 namespace mindspore { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_permute_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_permute_parser.h index 8cfa78bee194407b17427b04e076aa713c44bdff..28680d31f2b42fa941f4fd1c1754ba6762d2839b 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_permute_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_permute_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_PERMUTE_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_pooling_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_pooling_parser.cc index 554ad8d43c23e7144b8457e63fb084e732690625..638931ca657467249d3e956dce455af9f5adb80b 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_pooling_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_pooling_parser.cc @@ -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 const uint32_t INNERPRODUCT_WINDOW_DEFAULT_VALUE = 0; diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_pooling_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_pooling_parser.h index 0ff309192010b9c5c10009a0b327f8ef4b7fd394..c1b778d38e27db42a9a374d1e856a2b17afc25f3 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_pooling_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_pooling_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_POOLING_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_power_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_power_parser.cc index 158460e4a2b49988d24c271849118009f233a8cd..da4ce1127be77aaaea8142dd7420e5f251694439 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_power_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_power_parser.cc @@ -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 #include diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_power_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_power_parser.h index 0aa233811415ef489c10328de07a0ab353bca080..e5c8a6ed8d5ac464cc8c186089f7a558837d390d 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_power_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_power_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_POWER_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_prelu_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_prelu_parser.cc index 2c1b11cc82e464b11aa581c6935bf3d2b9b43394..71788fb5abbc561aec6edf7cc017bfbb5138dbd5 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_prelu_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_prelu_parser.cc @@ -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 namespace mindspore { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_prelu_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_prelu_parser.h index 11b9f7106c35b749b1a13a422ff1924925f450da..0275559497d328085efbc433e68df6641ef8127b 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_prelu_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_prelu_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_PRELU_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_relu6_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_relu6_parser.cc index 0ad8a4a1946022465bd129d10f7993c24cfaf1c8..cbb4555ee6285b6ada61dcf5758efcff7f894204 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_relu6_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_relu6_parser.cc @@ -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 namespace mindspore { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_relu6_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_relu6_parser.h index bb6e948ffeaff2052d35a4c5fdd4936ef4d09e10..a385f6e5a4dbfaf1fb3c32b6c84239feb8069ccb 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_relu6_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_relu6_parser.h @@ -17,8 +17,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_RELU6_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_relu_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_relu_parser.cc index 13309ddfc205ed1e1da8645d3d3895db9e636a6d..4cc16c507c437b2940142e7aeb61e51774890b45 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_relu_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_relu_parser.cc @@ -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 namespace mindspore { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_relu_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_relu_parser.h index 644181a90ba5a8214eb9d9ec4720c989a6f38168..06ef95372c80ce0416783275dbac8300e508e516 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_relu_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_relu_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_RELU_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_reshape_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_reshape_parser.cc index 3dbbebb4e802e3f90c8d301915a104f3ed20ec02..38261ca9c3f3bed87952cf491d71f342dde2dfe3 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_reshape_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_reshape_parser.cc @@ -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 namespace mindspore { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_reshape_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_reshape_parser.h index 94767b57462356cc5c22f0689fa53c8bf27fc6e2..05fd515756024397abe6500821d383fc2352b3f9 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_reshape_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_reshape_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_RESHAPE_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_scale_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_scale_parser.cc index 537a061d1c90e212e2b8976609c63b1a3aab6567..b6b09c78fcdbe04400b0aca4764dd24e1a9560d5 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_scale_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_scale_parser.cc @@ -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 const int32_t NCHW_DIM_C = 1; diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_scale_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_scale_parser.h index b1982ae7d8637d2426f04c61d1223211ca2ce7d8..667ad4136aa62c0b738ea7e406a028d0d9490eda 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_scale_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_scale_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_SCALE_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_sigmoid_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_sigmoid_parser.cc index 98c07a12383f1189c5888b4e5baad09865fbaea0..3c72db93dc41923f01921cdaed55b0deb22261c2 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_sigmoid_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_sigmoid_parser.cc @@ -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 namespace mindspore { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_sigmoid_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_sigmoid_parser.h index e6b2d4951f82cc892b01b836fc724fbac8c993c5..976d154fdc1029470490bc5486d5aa0daf662a65 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_sigmoid_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_sigmoid_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_SIGMOID_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_softmax_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_softmax_parser.cc index b3ebb2e19e29dac4306abd61d2e41c74c697cfd0..9839b25349322643bb53a49f703c6cc29411ed2a 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_softmax_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_softmax_parser.cc @@ -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 static const int32_t CAFFE_SOFTMAX_DEFAULT_AXIS = 1; diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_softmax_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_softmax_parser.h index 12e7438877bd06eaf1dd44e2f603d0268bb9adbf..ad59d5291df1e9e3079a76986868753c3e4f2a15 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_softmax_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_softmax_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_SOFTMAX_PARSER_H_ #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_tile_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_tile_parser.cc index d3c1b840ad31f118fab70cbb140fdc3ba8f77738..9ac361118b560da73b2b773c8bc574aa09abb5c7 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_tile_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_tile_parser.cc @@ -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 #include diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_tile_parser.h b/mindspore/lite/tools/converter/parser/caffe/caffe_tile_parser.h index 09ddb6f165790ee38a10ce72ee6dd9b5ffc0a7b0..bc898165244da61d856363be1cb86428f4ba3821 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_tile_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_tile_parser.h @@ -18,8 +18,8 @@ #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_TILE_PARSER_H #include -#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 { diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_arithmetic_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_arithmetic_parser.cc index 8db54f0497c29913e267782ce9c4e33ef12f2b97..68d9eaf1683dbdb0299c591e86ddad8bc98b7f99 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_arithmetic_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_arithmetic_parser.cc @@ -212,6 +212,9 @@ STATUS TfliteSingleInputOpParser::Parse(const std::unique_ptr } else if (std::strcmp(node_name, "Exp") == 0) { MS_LOG(DEBUG) << "parse TfliteExpParser"; auto attr = std::make_unique(); + 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; diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_custom_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_custom_parser.cc new file mode 100644 index 0000000000000000000000000000000000000000..fcdb7599f33521562ce933281224741a15da658c --- /dev/null +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_custom_parser.cc @@ -0,0 +1,67 @@ +/** + * 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 +#include +#include + +namespace mindspore { +namespace lite { +STATUS TfliteCustomParser::Parse(const std::unique_ptr &tflite_op, + const std::vector> &tflite_tensors, + const std::vector> &tflite_model_buffer, + schema::CNodeT *op, + std::vector *tensors_id, + std::vector *tensors_format, + std::map *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(); + if (op->primitive == nullptr) { + MS_LOG(ERROR) << "op->primitive is null"; + return RET_NULL_PTR; + } + + std::unique_ptr attr = std::make_unique(); + 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 + diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_custom_parser.h b/mindspore/lite/tools/converter/parser/tflite/tflite_custom_parser.h new file mode 100644 index 0000000000000000000000000000000000000000..150137b9e4e730703bed6c6b206b872abf6b8160 --- /dev/null +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_custom_parser.h @@ -0,0 +1,43 @@ +/** + * 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 +#include +#include +#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_op, + const std::vector> &tflite_tensors, + const std::vector> &tflite_model_buffer, + schema::CNodeT *op, + std::vector *tensors_id, + std::vector *tensors_format, + std::map *tensors_id_map) override; +}; +} // namespace lite +} // namespace mindspore + +#endif // MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_TFLITE_CUSTOM_PARSER_H diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_sparse_to_dense_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_sparse_to_dense_parser.cc index ddfaabf32ced2fc6f3b5c02c4b60cc593c0ef45e..b00950d1d3853ad0139975ab21f34c0816f02f58 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_sparse_to_dense_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_sparse_to_dense_parser.cc @@ -66,6 +66,12 @@ STATUS TfliteSparseToDenseParser::Parse(const std::unique_ptr 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; diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_util.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_util.cc index d987b6e8f97e4571e4b7f475d47ce4d5decfcc75..8d6f87a2f377ecef60e568e16470ebda0c347292 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_util.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_util.cc @@ -116,6 +116,7 @@ std::map tfMsOpTypeMap{ {tflite::BuiltinOperator_REVERSE_SEQUENCE, "ReverseSequence"}, {tflite::BuiltinOperator_UNIQUE, "Unique"}, {tflite::BuiltinOperator_UNPACK, "Unstack"}, + {tflite::BuiltinOperator_CUSTOM, "Custom"}, }; std::map tfMsActivationFunctionMap{