Merge pull request !5545 from 徐安越/mastertags/v1.0.0
| @@ -194,6 +194,7 @@ union PrimitiveType { | |||||
| MakeTuple, | MakeTuple, | ||||
| ToFormat, | ToFormat, | ||||
| Proposal, | Proposal, | ||||
| Custom, | |||||
| } | } | ||||
| enum QuantType: int { | enum QuantType: int { | ||||
| @@ -472,6 +472,9 @@ table Neg { | |||||
| } | } | ||||
| table Exp { | table Exp { | ||||
| base : float; | |||||
| scale : float; | |||||
| shift : float; | |||||
| } | } | ||||
| table Cos { | table Cos { | ||||
| @@ -896,3 +899,7 @@ table Proposal { | |||||
| post_nms_topn : int; | post_nms_topn : int; | ||||
| nms_thresh : float; | nms_thresh : float; | ||||
| } | } | ||||
| table Custom { | |||||
| custom : [ubyte]; | |||||
| } | |||||
| @@ -53,7 +53,7 @@ std::vector<int> SpaceToBatchND::GetPaddings() const { | |||||
| int SpaceToBatchND::UnPackToFlatBuilder(const schema::Primitive *primitive, flatbuffers::FlatBufferBuilder *fbb) { | int SpaceToBatchND::UnPackToFlatBuilder(const schema::Primitive *primitive, flatbuffers::FlatBufferBuilder *fbb) { | ||||
| MS_ASSERT(nullptr != primitive); | MS_ASSERT(nullptr != primitive); | ||||
| MS_ASSERT(nullptr != fbb); | MS_ASSERT(nullptr != fbb); | ||||
| auto attr = primitive->value_as_SpaceToBatch(); | |||||
| auto attr = primitive->value_as_SpaceToBatchND(); | |||||
| if (attr == nullptr) { | if (attr == nullptr) { | ||||
| MS_LOG(ERROR) << "value_as_SpaceToBatch return nullptr"; | MS_LOG(ERROR) << "value_as_SpaceToBatch return nullptr"; | ||||
| return RET_ERROR; | return RET_ERROR; | ||||
| @@ -71,7 +71,7 @@ int SpaceToBatchND::UnPackToFlatBuilder(const schema::Primitive *primitive, flat | |||||
| } | } | ||||
| } | } | ||||
| auto val_offset = schema::CreateSpaceToBatchDirect(*fbb, &blockShape, &paddings); | 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); | fbb->Finish(prim_offset); | ||||
| return RET_OK; | return RET_OK; | ||||
| } | } | ||||
| @@ -111,6 +111,7 @@ | |||||
| #include "src/ops/squared_difference.h" | #include "src/ops/squared_difference.h" | ||||
| #include "src/ops/ceil.h" | #include "src/ops/ceil.h" | ||||
| #include "src/ops/round.h" | #include "src/ops/round.h" | ||||
| #include "src/ops/sparse_to_dense.h" | |||||
| #include "nnacl/op_base.h" | #include "nnacl/op_base.h" | ||||
| #include "nnacl/fp32/arg_min_max.h" | #include "nnacl/fp32/arg_min_max.h" | ||||
| #include "nnacl/fp32/cast.h" | #include "nnacl/fp32/cast.h" | ||||
| @@ -167,6 +168,7 @@ | |||||
| #include "nnacl/fp32/embedding_lookup.h" | #include "nnacl/fp32/embedding_lookup.h" | ||||
| #include "nnacl/fp32/elu.h" | #include "nnacl/fp32/elu.h" | ||||
| #include "nnacl/leaky_relu_parameter.h" | #include "nnacl/leaky_relu_parameter.h" | ||||
| #include "nnacl/sparse_to_dense.h" | |||||
| namespace mindspore::kernel { | namespace mindspore::kernel { | ||||
| @@ -678,11 +680,11 @@ OpParameter *PopulateArithmetic(const mindspore::lite::PrimitiveC *primitive) { | |||||
| break; | break; | ||||
| } | } | ||||
| auto tmp_shape = ((lite::Arithmetic *)primitive)->InShape0(); | 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(); | 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(); | 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); | return reinterpret_cast<OpParameter *>(arithmetic_param); | ||||
| } | } | ||||
| @@ -1015,6 +1017,18 @@ OpParameter *PopulateSliceParameter(const mindspore::lite::PrimitiveC *primitive | |||||
| return reinterpret_cast<OpParameter *>(slice_param); | 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) { | OpParameter *PopulateBroadcastToParameter(const mindspore::lite::PrimitiveC *primitive) { | ||||
| BroadcastToParameter *broadcast_param = | BroadcastToParameter *broadcast_param = | ||||
| reinterpret_cast<BroadcastToParameter *>(malloc(sizeof(BroadcastToParameter))); | reinterpret_cast<BroadcastToParameter *>(malloc(sizeof(BroadcastToParameter))); | ||||
| @@ -1205,28 +1219,26 @@ OpParameter *PopulateSpaceToBatchParameter(const mindspore::lite::PrimitiveC *pr | |||||
| } | } | ||||
| memset(space_batch_param, 0, sizeof(SpaceToBatchParameter)); | memset(space_batch_param, 0, sizeof(SpaceToBatchParameter)); | ||||
| space_batch_param->op_parameter_.type_ = primitive->Type(); | space_batch_param->op_parameter_.type_ = primitive->Type(); | ||||
| space_batch_param->op_parameter_.type_ = primitive->Type(); | |||||
| auto block_sizes = ((mindspore::lite::SpaceToBatch *)primitive)->BlockSizes(); | 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(); | 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); | return reinterpret_cast<OpParameter *>(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."; | MS_LOG(ERROR) << "new SpaceToBatchParameter failed."; | ||||
| return nullptr; | 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) { | 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(); | auto n_dims = ((lite::StridedSlice *)primitive)->NDims(); | ||||
| strided_slice_param->num_axes_ = n_dims; | strided_slice_param->num_axes_ = n_dims; | ||||
| auto begin = ((lite::StridedSlice *)primitive)->GetBegins(); | 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(); | 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(); | 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(); | 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); | return reinterpret_cast<OpParameter *>(strided_slice_param); | ||||
| } | } | ||||
| @@ -1405,9 +1417,9 @@ OpParameter *PopulatePriorBoxParameter(const mindspore::lite::PrimitiveC *primit | |||||
| return nullptr; | return nullptr; | ||||
| } | } | ||||
| prior_box_param->max_sizes_size = prior_box_attr->GetMaxSizes().size(); | 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)); | 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)); | prior_box_attr->GetMinSizes().size() * sizeof(int32_t)); | ||||
| if (prior_box_attr->GetAspectRatios().size() > PRIOR_BOX_MAX_NUM) { | if (prior_box_attr->GetAspectRatios().size() > PRIOR_BOX_MAX_NUM) { | ||||
| @@ -1417,7 +1429,7 @@ OpParameter *PopulatePriorBoxParameter(const mindspore::lite::PrimitiveC *primit | |||||
| return nullptr; | return nullptr; | ||||
| } | } | ||||
| prior_box_param->aspect_ratios_size = prior_box_attr->GetAspectRatios().size(); | 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)); | prior_box_attr->GetAspectRatios().size() * sizeof(float)); | ||||
| if (prior_box_attr->GetVariances().size() != PRIOR_BOX_VAR_NUM) { | if (prior_box_attr->GetVariances().size() != PRIOR_BOX_VAR_NUM) { | ||||
| MS_LOG(ERROR) << "PriorBox variances size should be " << PRIOR_BOX_VAR_NUM << ", got " | 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); | free(prior_box_param); | ||||
| return nullptr; | 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->flip = prior_box_attr->GetFlip(); | ||||
| prior_box_param->clip = prior_box_attr->GetClip(); | prior_box_param->clip = prior_box_attr->GetClip(); | ||||
| prior_box_param->offset = prior_box_attr->GetOffset(); | prior_box_param->offset = prior_box_attr->GetOffset(); | ||||
| @@ -1501,6 +1513,7 @@ OpParameter *PopulateEluParameter(const mindspore::lite::PrimitiveC *primitive) | |||||
| } | } | ||||
| PopulateParameterRegistry::PopulateParameterRegistry() { | PopulateParameterRegistry::PopulateParameterRegistry() { | ||||
| populate_parameter_funcs_[schema::PrimitiveType_SparseToDense] = PopulateSparseToDenseParameter; | |||||
| populate_parameter_funcs_[schema::PrimitiveType_SoftMax] = PopulateSoftmaxParameter; | populate_parameter_funcs_[schema::PrimitiveType_SoftMax] = PopulateSoftmaxParameter; | ||||
| populate_parameter_funcs_[schema::PrimitiveType_Activation] = PopulateActivationParameter; | populate_parameter_funcs_[schema::PrimitiveType_Activation] = PopulateActivationParameter; | ||||
| populate_parameter_funcs_[schema::PrimitiveType_Conv2D] = PopulateConvParameter; | 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_BatchToSpace] = PopulateBatchToSpaceParameter; | ||||
| populate_parameter_funcs_[schema::PrimitiveType_SpaceToDepth] = PopulateSpaceToDepthParameter; | populate_parameter_funcs_[schema::PrimitiveType_SpaceToDepth] = PopulateSpaceToDepthParameter; | ||||
| populate_parameter_funcs_[schema::PrimitiveType_SpaceToBatch] = PopulateSpaceToBatchParameter; | 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_Crop] = PopulateCropParameter; | ||||
| populate_parameter_funcs_[schema::PrimitiveType_Unsqueeze] = PopulateUnsqueezeParameter; | populate_parameter_funcs_[schema::PrimitiveType_Unsqueeze] = PopulateUnsqueezeParameter; | ||||
| populate_parameter_funcs_[schema::PrimitiveType_Flatten] = PopulateFlattenParameter; | populate_parameter_funcs_[schema::PrimitiveType_Flatten] = PopulateFlattenParameter; | ||||
| @@ -28,4 +28,5 @@ add_library(caffe_parser_mid OBJECT | |||||
| ${CMAKE_CURRENT_SOURCE_DIR}/caffe_interp_parser.cc | ${CMAKE_CURRENT_SOURCE_DIR}/caffe_interp_parser.cc | ||||
| ${CMAKE_CURRENT_SOURCE_DIR}/caffe_permute_parser.cc | ${CMAKE_CURRENT_SOURCE_DIR}/caffe_permute_parser.cc | ||||
| ${CMAKE_CURRENT_SOURCE_DIR}/caffe_tile_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) | |||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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> | #include <memory> | ||||
| namespace mindspore { | namespace mindspore { | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_ARGMAX_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_ARGMAX_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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 <cmath> | ||||
| #include <memory> | #include <memory> | ||||
| #include "tools/common/tensor_util.h" | #include "tools/common/tensor_util.h" | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_BATCHNORM_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_BATCHNORM_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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> | #include <memory> | ||||
| const int32_t CONCAT_DEFAULT_AXIS = 1; | const int32_t CONCAT_DEFAULT_AXIS = 1; | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_CONCAT_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_CONCAT_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -19,8 +19,8 @@ | |||||
| #include <string> | #include <string> | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -19,9 +19,9 @@ | |||||
| #include <string> | #include <string> | ||||
| #include <memory> | #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 { | namespace mindspore::lite { | ||||
| class CaffeConverter : public Converter { | class CaffeConverter : public Converter { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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> | #include <memory> | ||||
| namespace mindspore { | namespace mindspore { | ||||
| @@ -18,9 +18,9 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_CONVOLUTION_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_CONVOLUTION_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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> | #include <memory> | ||||
| const int32_t CROP_AXIS = 2; | const int32_t CROP_AXIS = 2; | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_CROP_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_CROP_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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> | #include <memory> | ||||
| namespace mindspore { | namespace mindspore { | ||||
| @@ -18,9 +18,9 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_DECONVOLUTION_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_DECONVOLUTION_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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 <cmath> | ||||
| #include <memory> | #include <memory> | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_ELTWISE_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_ELTWISE_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -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 <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 | |||||
| @@ -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 <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 | |||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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> | #include <memory> | ||||
| namespace mindspore { | namespace mindspore { | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_FLATTEN_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_FLATTEN_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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> | #include <memory> | ||||
| namespace mindspore { | namespace mindspore { | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_INNERPRODUCT_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_INNERPRODUCT_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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" | #include "utils/log_adapter.h" | ||||
| namespace mindspore { | namespace mindspore { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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> | #include <memory> | ||||
| namespace mindspore { | namespace mindspore { | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_INTERP_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_INTERP_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -91,7 +91,12 @@ schema::MetaGraphT *CaffeModelParser::ParseToFb(const std::string &modelFile, co | |||||
| STATUS CaffeModelParser::SetOpInputIdx(const caffe::LayerParameter &layer, schema::CNodeT *op, | STATUS CaffeModelParser::SetOpInputIdx(const caffe::LayerParameter &layer, schema::CNodeT *op, | ||||
| TensorCache *tensorCache) { | TensorCache *tensorCache) { | ||||
| for (int i = 0; i < layer.bottom_size(); i++) { | 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) { | if (index >= 0) { | ||||
| op->inputIndex.emplace_back(index); | op->inputIndex.emplace_back(index); | ||||
| } else { | } 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>(); | std::unique_ptr<schema::CNodeT> op = std::make_unique<schema::CNodeT>(); | ||||
| op->name = layer.name(); | op->name = layer.name(); | ||||
| if (layer.type() == "Split") { | |||||
| splitLayer.emplace(layer.name(), layer.bottom(0)); | |||||
| continue; | |||||
| } | |||||
| auto status = SetOpInputIdx(layer, op.get(), tensorCache); | auto status = SetOpInputIdx(layer, op.get(), tensorCache); | ||||
| if (status != RET_OK) { | if (status != RET_OK) { | ||||
| MS_LOG(ERROR) << "Set Op " << layer.name() << " Input Index Failed!"; | MS_LOG(ERROR) << "Set Op " << layer.name() << " Input Index Failed!"; | ||||
| @@ -21,7 +21,8 @@ | |||||
| #include <vector> | #include <vector> | ||||
| #include <memory> | #include <memory> | ||||
| #include <set> | #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/converter/parser/caffe/caffe.pb.h" | ||||
| #include "tools/common/tensor_util.h" | #include "tools/common/tensor_util.h" | ||||
| @@ -55,6 +56,8 @@ class CaffeModelParser : public ModelParser { | |||||
| STATUS GetModelInput(const caffe::NetParameter &proto, TensorCache *tensorCache); | STATUS GetModelInput(const caffe::NetParameter &proto, TensorCache *tensorCache); | ||||
| static const std::set<std::string> skipedLayerType; | static const std::set<std::string> skipedLayerType; | ||||
| std::unordered_map<std::string, std::string> splitLayer; | |||||
| }; | }; | ||||
| } // namespace lite | } // namespace lite | ||||
| } // namespace mindspore | } // namespace mindspore | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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 <memory> | ||||
| #include "securec/include/securec.h" | #include "securec/include/securec.h" | ||||
| #include "ir/dtype/type_id.h" | #include "ir/dtype/type_id.h" | ||||
| @@ -20,9 +20,9 @@ | |||||
| #include <string> | #include <string> | ||||
| #include <vector> | #include <vector> | ||||
| #include "google/protobuf/message.h" | #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 "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 "include/errorcode.h" | ||||
| #include "utils/log_adapter.h" | #include "utils/log_adapter.h" | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -19,7 +19,7 @@ | |||||
| #include <string> | #include <string> | ||||
| #include <unordered_map> | #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" | #include "tools/converter/parser/caffe/caffe.pb.h" | ||||
| namespace mindspore::lite { | namespace mindspore::lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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> | #include <memory> | ||||
| namespace mindspore { | namespace mindspore { | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_PERMUTE_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_PERMUTE_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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> | #include <memory> | ||||
| const uint32_t INNERPRODUCT_WINDOW_DEFAULT_VALUE = 0; | const uint32_t INNERPRODUCT_WINDOW_DEFAULT_VALUE = 0; | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_POOLING_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_POOLING_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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 <memory> | ||||
| #include <vector> | #include <vector> | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_POWER_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_POWER_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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> | #include <memory> | ||||
| namespace mindspore { | namespace mindspore { | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_PRELU_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_PRELU_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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> | #include <memory> | ||||
| namespace mindspore { | namespace mindspore { | ||||
| @@ -17,8 +17,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_RELU6_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_RELU6_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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> | #include <memory> | ||||
| namespace mindspore { | namespace mindspore { | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_RELU_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_RELU_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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> | #include <memory> | ||||
| namespace mindspore { | namespace mindspore { | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_RESHAPE_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_RESHAPE_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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> | #include <memory> | ||||
| const int32_t NCHW_DIM_C = 1; | const int32_t NCHW_DIM_C = 1; | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_SCALE_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_SCALE_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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> | #include <memory> | ||||
| namespace mindspore { | namespace mindspore { | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_SIGMOID_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_SIGMOID_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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> | #include <memory> | ||||
| static const int32_t CAFFE_SOFTMAX_DEFAULT_AXIS = 1; | static const int32_t CAFFE_SOFTMAX_DEFAULT_AXIS = 1; | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_SOFTMAX_PARSER_H_ | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_SOFTMAX_PARSER_H_ | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -14,7 +14,7 @@ | |||||
| * limitations under the License. | * 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 <memory> | ||||
| #include <vector> | #include <vector> | ||||
| @@ -18,8 +18,8 @@ | |||||
| #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_TILE_PARSER_H | #define MINDSPORE_LITE_TOOLS_CONVERTER_PARSER_CAFFE_CAFFE_TILE_PARSER_H | ||||
| #include <vector> | #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 mindspore { | ||||
| namespace lite { | namespace lite { | ||||
| @@ -212,6 +212,9 @@ STATUS TfliteSingleInputOpParser::Parse(const std::unique_ptr<tflite::OperatorT> | |||||
| } else if (std::strcmp(node_name, "Exp") == 0) { | } else if (std::strcmp(node_name, "Exp") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteExpParser"; | MS_LOG(DEBUG) << "parse TfliteExpParser"; | ||||
| auto attr = std::make_unique<schema::ExpT>(); | auto attr = std::make_unique<schema::ExpT>(); | ||||
| attr->base = -1; // -1 represent base = e | |||||
| attr->scale = 1; | |||||
| attr->shift = 0; | |||||
| if (attr == nullptr) { | if (attr == nullptr) { | ||||
| MS_LOG(ERROR) << "new op failed"; | MS_LOG(ERROR) << "new op failed"; | ||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| @@ -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 <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 | |||||
| @@ -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 <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 | |||||
| @@ -66,6 +66,12 @@ STATUS TfliteSparseToDenseParser::Parse(const std::unique_ptr<tflite::OperatorT> | |||||
| AddOpInput(op, tensors_id, tensors_format, tensors_id_map, | AddOpInput(op, tensors_id, tensors_format, tensors_id_map, | ||||
| tflite_op->inputs[0], tensors_id->size(), tflite_tensors.size(), schema::Format_NHWC); | 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, | AddOpOutput(op, tensors_id, tensors_format, tensors_id_map, | ||||
| tflite_op->outputs[0], tensors_id->size(), tflite_tensors.size(), schema::Format_NHWC); | tflite_op->outputs[0], tensors_id->size(), tflite_tensors.size(), schema::Format_NHWC); | ||||
| return RET_OK; | return RET_OK; | ||||
| @@ -116,6 +116,7 @@ std::map<tflite::BuiltinOperator, std::string> tfMsOpTypeMap{ | |||||
| {tflite::BuiltinOperator_REVERSE_SEQUENCE, "ReverseSequence"}, | {tflite::BuiltinOperator_REVERSE_SEQUENCE, "ReverseSequence"}, | ||||
| {tflite::BuiltinOperator_UNIQUE, "Unique"}, | {tflite::BuiltinOperator_UNIQUE, "Unique"}, | ||||
| {tflite::BuiltinOperator_UNPACK, "Unstack"}, | {tflite::BuiltinOperator_UNPACK, "Unstack"}, | ||||
| {tflite::BuiltinOperator_CUSTOM, "Custom"}, | |||||
| }; | }; | ||||
| std::map<tflite::ActivationFunctionType, schema::ActivationType> tfMsActivationFunctionMap{ | std::map<tflite::ActivationFunctionType, schema::ActivationType> tfMsActivationFunctionMap{ | ||||