From 3ad8ed66fde2b3b428362cbe39ffdcb61acf7a81 Mon Sep 17 00:00:00 2001 From: liuyu Date: Thu, 28 Jan 2021 10:10:54 +0800 Subject: [PATCH] modify parsers --- mindspore/lite/src/ops/ops_utils.cc | 338 +++++++++--------- .../parser/caffe/caffe_activation_parser.cc | 44 +-- .../parser/caffe/caffe_argmax_parser.cc | 20 +- .../parser/caffe/caffe_batchnorm_parser.cc | 16 +- .../parser/caffe/caffe_concat_parser.cc | 10 +- .../parser/caffe/caffe_convolution_parser.cc | 39 +- .../parser/caffe/caffe_crop_parser.cc | 18 +- .../caffe/caffe_deconvolution_parser.cc | 41 +-- .../parser/caffe/caffe_eltwise_parser.cc | 16 +- .../parser/caffe/caffe_elu_parser.cc | 10 +- .../parser/caffe/caffe_exp_parser.cc | 21 +- .../parser/caffe/caffe_flatten_parser.cc | 8 +- .../parser/caffe/caffe_innerproduct_parser.cc | 18 +- .../parser/caffe/caffe_interp_parser.cc | 17 +- .../parser/caffe/caffe_model_parser.cc | 16 +- .../parser/caffe/caffe_model_parser.h | 2 +- .../parser/caffe/caffe_permute_parser.cc | 10 +- .../parser/caffe/caffe_pooling_parser.cc | 40 +-- .../parser/caffe/caffe_power_parser.cc | 14 +- .../parser/caffe/caffe_prelu_parser.cc | 16 +- .../parser/caffe/caffe_reduce_parser.cc | 22 +- .../parser/caffe/caffe_reshape_parser.cc | 10 +- .../parser/caffe/caffe_scale_parser.cc | 24 +- .../parser/caffe/caffe_scale_parser.h | 2 - .../parser/caffe/caffe_slice_parser.cc | 18 +- .../parser/caffe/caffe_softmax_parser.cc | 12 +- .../parser/caffe/caffe_tile_parser.cc | 13 +- .../parser/onnx/onnx_activation_parser.cc | 68 ++-- .../parser/onnx/onnx_adder_parser.cc | 9 +- .../parser/onnx/onnx_argmax_parser.cc | 12 +- .../onnx/onnx_arithmetic_operation_parser.cc | 261 ++++---------- .../parser/onnx/onnx_batchnorm_parser.cc | 12 +- .../parser/onnx/onnx_biasadd_parser.cc | 9 +- .../converter/parser/onnx/onnx_cast_parser.cc | 10 +- .../converter/parser/onnx/onnx_clip_parser.cc | 16 +- .../parser/onnx/onnx_concat_parser.cc | 10 +- .../onnx/onnx_constant_of_shape_parser.cc | 12 +- .../parser/onnx/onnx_constant_parser.cc | 16 +- .../parser/onnx/onnx_constant_parser.h | 2 +- .../converter/parser/onnx/onnx_conv_parser.cc | 64 ++-- .../parser/onnx/onnx_conv_transpose_parser.cc | 39 +- .../parser/onnx/onnx_depth_to_space_parser.cc | 10 +- .../parser/onnx/onnx_dropout_parser.cc | 10 +- .../parser/onnx/onnx_expand_parser.cc | 10 +- .../parser/onnx/onnx_flatten_parser.cc | 9 +- .../parser/onnx/onnx_gather_parser.cc | 10 +- .../converter/parser/onnx/onnx_gemm_parser.cc | 12 +- .../onnx/onnx_given_tensor_fill_parser.cc | 33 +- .../onnx/onnx_given_tensor_fill_parser.h | 4 +- .../parser/onnx/onnx_identity_parser.cc | 10 +- .../parser/onnx/onnx_instance_norm_parser.cc | 12 +- .../parser/onnx/onnx_lp_norm_parser.cc | 12 +- .../converter/parser/onnx/onnx_lrn_parser.cc | 16 +- .../converter/parser/onnx/onnx_lstm_parser.cc | 20 +- .../parser/onnx/onnx_matmul_parser.cc | 12 +- .../parser/onnx/onnx_model_parser.cc | 75 ++-- .../converter/parser/onnx/onnx_model_parser.h | 10 +- .../onnx/onnx_non_max_suppression_parser.cc | 10 +- .../parser/onnx/onnx_onehot_parser.cc | 10 +- .../converter/parser/onnx/onnx_pad_parser.cc | 22 +- .../converter/parser/onnx/onnx_pool_parser.cc | 50 ++- .../parser/onnx/onnx_quantize_parser.cc | 16 +- .../parser/onnx/onnx_range_parser.cc | 10 +- .../parser/onnx/onnx_reduce_parser.cc | 26 +- .../parser/onnx/onnx_reshape_parser.cc | 10 +- .../parser/onnx/onnx_resize_parser.cc | 25 +- .../parser/onnx/onnx_shape_parser.cc | 9 +- .../parser/onnx/onnx_slice_parser.cc | 19 +- .../parser/onnx/onnx_softmax_parser.cc | 10 +- .../parser/onnx/onnx_space_to_depth_parser.cc | 10 +- .../parser/onnx/onnx_split_parser.cc | 17 +- .../parser/onnx/onnx_squeeze_parser.cc | 10 +- .../converter/parser/onnx/onnx_tile_parser.cc | 9 +- .../converter/parser/onnx/onnx_topk_parser.cc | 10 +- .../parser/onnx/onnx_transpose_parser.cc | 10 +- .../parser/onnx/onnx_unsqueeze_parser.cc | 10 +- .../parser/onnx/onnx_upsample_parser.cc | 18 +- .../parser/tf/tf_activation_parser.cc | 17 +- .../parser/tf/tf_arithmetic_parser.cc | 96 ++--- .../converter/parser/tf/tf_assert_parser.cc | 10 +- .../converter/parser/tf/tf_biasadd_parser.cc | 8 +- .../converter/parser/tf/tf_cast_parser.cc | 10 +- .../converter/parser/tf/tf_concat_parser.cc | 10 +- .../converter/parser/tf/tf_conv_parser.cc | 28 +- .../parser/tf/tf_expand_dims_parser.cc | 8 +- .../converter/parser/tf/tf_gather_parser.cc | 10 +- .../converter/parser/tf/tf_logical_parser.cc | 8 +- .../converter/parser/tf/tf_matmul_parser.cc | 12 +- .../converter/parser/tf/tf_pack_parser.cc | 10 +- .../parser/tf/tf_ragged_range_parser.cc | 14 +- .../converter/parser/tf/tf_range_parser.cc | 15 +- .../converter/parser/tf/tf_reduce_parser.cc | 22 +- .../converter/parser/tf/tf_reshape_parser.cc | 8 +- .../parser/tf/tf_reverse_sequence_parser.cc | 12 +- .../converter/parser/tf/tf_round_parser.cc | 8 +- .../converter/parser/tf/tf_shape_parser.cc | 8 +- .../converter/parser/tf/tf_split_parser.cc | 18 +- .../converter/parser/tf/tf_squeeze_parser.cc | 10 +- .../parser/tf/tf_stride_slice_parser.cc | 18 +- .../tf/tf_tensor_list_from_tensor_parser.cc | 12 +- .../tf/tf_tensor_list_get_item_parser.cc | 10 +- .../tf/tf_tensor_list_reserve_parser.cc | 12 +- .../tf/tf_tensor_list_set_item_parser.cc | 10 +- .../parser/tf/tf_tensor_list_stack_parser.cc | 12 +- .../converter/parser/tf/tf_tile_parser.cc | 10 +- .../parser/tf/tf_transpose_parser.cc | 8 +- .../converter/parser/tf/tf_while_parser.cc | 8 +- .../parser/tflite/tflite_activation_parser.cc | 61 +--- .../parser/tflite/tflite_addn_parser.cc | 9 +- .../parser/tflite/tflite_argmax_parser.cc | 8 +- .../parser/tflite/tflite_argmin_parser.cc | 8 +- .../parser/tflite/tflite_arithmetic_parser.cc | 246 +++---------- .../tflite/tflite_batch_to_space_parser.cc | 8 +- .../tflite/tflite_broadcast_to_parser.cc | 8 +- .../parser/tflite/tflite_cast_parser.cc | 8 +- .../parser/tflite/tflite_concat_parser.cc | 8 +- .../parser/tflite/tflite_conv_parser.cc | 12 +- .../tflite/tflite_conv_transpose_parser.cc | 8 +- .../parser/tflite/tflite_custom_parser.cc | 85 ++--- .../tflite/tflite_depth_to_space_parser.cc | 8 +- .../parser/tflite/tflite_dequantize_parser.cc | 20 +- .../tflite/tflite_expand_dims_parser.cc | 9 +- .../parser/tflite/tflite_fill_parser.cc | 9 +- .../tflite/tflite_fullyconnected_parser.cc | 8 +- .../parser/tflite/tflite_gather_nd_parser.cc | 9 +- .../parser/tflite/tflite_gather_parser.cc | 8 +- .../tflite/tflite_hashtable_lookup_parser.cc | 9 +- .../parser/tflite/tflite_l2norm_parser.cc | 8 +- .../parser/tflite/tflite_logical_parser.cc | 27 +- .../parser/tflite/tflite_lrn_parser.cc | 8 +- .../tflite/tflite_lsh_projection_parser.cc | 8 +- .../parser/tflite/tflite_matmul_parser.cc | 8 +- .../parser/tflite/tflite_model_parser.cc | 10 +- .../parser/tflite/tflite_model_parser.h | 2 +- .../parser/tflite/tflite_one_hot_parser.cc | 8 +- .../parser/tflite/tflite_pad_parser.cc | 8 +- .../parser/tflite/tflite_pooling_parser.cc | 16 +- .../parser/tflite/tflite_quantize_parser.cc | 18 +- .../parser/tflite/tflite_range_parser.cc | 8 +- .../parser/tflite/tflite_rank_parser.cc | 9 +- .../parser/tflite/tflite_reduce_parser.cc | 8 +- .../parser/tflite/tflite_reshape_parser.cc | 8 +- .../parser/tflite/tflite_resize_parser.cc | 20 +- .../parser/tflite/tflite_reverse_parser.cc | 8 +- .../tflite/tflite_reverse_sequence_parser.cc | 8 +- .../parser/tflite/tflite_scatter_nd_parser.cc | 9 +- .../parser/tflite/tflite_shape_parser.cc | 9 +- .../parser/tflite/tflite_skip_gram_parser.cc | 8 +- .../parser/tflite/tflite_slice_parser.cc | 8 +- .../parser/tflite/tflite_softmax_parser.cc | 8 +- .../tflite/tflite_space_to_batch_nd_parser.cc | 8 +- .../tflite/tflite_space_to_depth_parser.cc | 8 +- .../tflite/tflite_sparse_to_dense_parser.cc | 9 +- .../parser/tflite/tflite_split_parser.cc | 8 +- .../parser/tflite/tflite_split_v_parser.cc | 8 +- .../parser/tflite/tflite_squeeze_parser.cc | 8 +- .../parser/tflite/tflite_stack_parser.cc | 8 +- .../tflite/tflite_strided_slice_parser.cc | 8 +- .../parser/tflite/tflite_tile_parser.cc | 9 +- .../parser/tflite/tflite_topk_v2_parser.cc | 8 +- .../parser/tflite/tflite_transpose_parser.cc | 9 +- .../parser/tflite/tflite_unique_parser.cc | 9 +- .../parser/tflite/tflite_unstack_parser.cc | 8 +- .../parser/tflite/tflite_where_parser.cc | 9 +- .../parser/tflite/tflite_while_parser.cc | 8 +- .../parser/tflite/tflite_zeros_like_parser.cc | 9 +- 166 files changed, 1086 insertions(+), 2202 deletions(-) diff --git a/mindspore/lite/src/ops/ops_utils.cc b/mindspore/lite/src/ops/ops_utils.cc index edf48224e1..de41a5139f 100644 --- a/mindspore/lite/src/ops/ops_utils.cc +++ b/mindspore/lite/src/ops/ops_utils.cc @@ -651,184 +651,184 @@ schema::PrimitiveT *ZerosLikePrimitiveCreator(const AnfNodePtr &node) { return ms_primc != nullptr ? ops::MSOp2SchemaOp(ms_primc.get()) : nullptr; } -RegistryMSOps g_AbsPrimitiveCreatorRegistry("Abs", AbsPrimitiveCreator); -RegistryMSOps g_ActivationPrimitiveCreatorRegistry("Activation", ActivationPrimitiveCreator); -RegistryMSOps g_ActivationGradPrimitiveCreatorRegistry("ActivationGrad", ActivationGradPrimitiveCreator); -RegistryMSOps g_AddPrimitiveCreatorRegistry("Add", AddFusionPrimitiveCreator); -RegistryMSOps g_AddFusionPrimitiveCreatorRegistry("AddFusion", AddFusionPrimitiveCreator); -RegistryMSOps g_AddGradPrimitiveCreatorRegistry("AddGrad", AddGradPrimitiveCreator); -RegistryMSOps g_AdderPrimitiveCreatorRegistry("Adder", AdderFusionPrimitiveCreator); -RegistryMSOps g_AdderFusionPrimitiveCreatorRegistry("AdderFusion", AdderFusionPrimitiveCreator); -RegistryMSOps g_AddNPrimitiveCreatorRegistry("AddN", AddNPrimitiveCreator); -RegistryMSOps g_AllPrimitiveCreatorRegistry("All", AllPrimitiveCreator); -RegistryMSOps g_ApplyMomentumPrimitiveCreatorRegistry("ApplyMomentum", ApplyMomentumPrimitiveCreator); -RegistryMSOps g_ArgMaxPrimitiveCreatorRegistry("ArgMax", ArgMaxFusionPrimitiveCreator); -RegistryMSOps g_ArgMaxFusionPrimitiveCreatorRegistry("ArgMaxFusion", ArgMaxFusionPrimitiveCreator); -RegistryMSOps g_ArgMinPrimitiveCreatorRegistry("ArgMin", ArgMinFusionPrimitiveCreator); -RegistryMSOps g_ArgMinFusionPrimitiveCreatorRegistry("ArgMinFusion", ArgMinFusionPrimitiveCreator); -RegistryMSOps g_AssertPrimitiveCreatorRegistry("Assert", AssertPrimitiveCreator); -RegistryMSOps g_AssignPrimitiveCreatorRegistry("Assign", AssignPrimitiveCreator); -RegistryMSOps g_AssignAddPrimitiveCreatorRegistry("AssignAdd", AssignAddPrimitiveCreator); -RegistryMSOps g_AvgPoolPrimitiveCreatorRegistry("AvgPool", AvgPoolFusionPrimitiveCreator); -RegistryMSOps g_AvgPoolFusionPrimitiveCreatorRegistry("AvgPoolFusion", AvgPoolFusionPrimitiveCreator); -RegistryMSOps g_BatchNormPrimitiveCreatorRegistry("BatchNorm", BatchNormPrimitiveCreator); -RegistryMSOps g_BatchToSpacePrimitiveCreatorRegistry("BatchToSpace", BatchToSpacePrimitiveCreator); -RegistryMSOps g_BatchToSpaceNDPrimitiveCreatorRegistry("BatchToSpaceND", BatchToSpaceNDPrimitiveCreator); -RegistryMSOps g_BiasAddPrimitiveCreatorRegistry("BiasAdd", BiasAddPrimitiveCreator); -RegistryMSOps g_BNGradPrimitiveCreatorRegistry("BNGrad", BNGradPrimitiveCreator); -RegistryMSOps g_BroadcastToPrimitiveCreatorRegistry("BroadcastTo", BroadcastToPrimitiveCreator); -RegistryMSOps g_CastPrimitiveCreatorRegistry("Cast", CastPrimitiveCreator); -RegistryMSOps g_CeilPrimitiveCreatorRegistry("Ceil", CeilPrimitiveCreator); -RegistryMSOps g_ClipPrimitiveCreatorRegistry("Clip", ClipPrimitiveCreator); -RegistryMSOps g_ConcatPrimitiveCreatorRegistry("Concat", ConcatPrimitiveCreator); -// RegistryMSOps g_ControlDependPrimitiveCreatorRegistry("ControlDepend", ControlDependPrimitiveCreator); -RegistryMSOps g_Conv2DBackpropFilterFusionPrimitiveCreatorRegistry("Conv2DBackpropFilterFusion", +RegistryMSOps g_absPrimitiveCreatorRegistry("Abs", AbsPrimitiveCreator); +RegistryMSOps g_activationPrimitiveCreatorRegistry("Activation", ActivationPrimitiveCreator); +RegistryMSOps g_activationGradPrimitiveCreatorRegistry("ActivationGrad", ActivationGradPrimitiveCreator); +RegistryMSOps g_addPrimitiveCreatorRegistry("Add", AddFusionPrimitiveCreator); +RegistryMSOps g_addFusionPrimitiveCreatorRegistry("AddFusion", AddFusionPrimitiveCreator); +RegistryMSOps g_addGradPrimitiveCreatorRegistry("AddGrad", AddGradPrimitiveCreator); +RegistryMSOps g_adderPrimitiveCreatorRegistry("Adder", AdderFusionPrimitiveCreator); +RegistryMSOps g_adderFusionPrimitiveCreatorRegistry("AdderFusion", AdderFusionPrimitiveCreator); +RegistryMSOps g_addNPrimitiveCreatorRegistry("AddN", AddNPrimitiveCreator); +RegistryMSOps g_allPrimitiveCreatorRegistry("All", AllPrimitiveCreator); +RegistryMSOps g_applyMomentumPrimitiveCreatorRegistry("ApplyMomentum", ApplyMomentumPrimitiveCreator); +RegistryMSOps g_argMaxPrimitiveCreatorRegistry("ArgMax", ArgMaxFusionPrimitiveCreator); +RegistryMSOps g_argMaxFusionPrimitiveCreatorRegistry("ArgMaxFusion", ArgMaxFusionPrimitiveCreator); +RegistryMSOps g_argMinPrimitiveCreatorRegistry("ArgMin", ArgMinFusionPrimitiveCreator); +RegistryMSOps g_argMinFusionPrimitiveCreatorRegistry("ArgMinFusion", ArgMinFusionPrimitiveCreator); +RegistryMSOps g_assertPrimitiveCreatorRegistry("Assert", AssertPrimitiveCreator); +RegistryMSOps g_assignPrimitiveCreatorRegistry("Assign", AssignPrimitiveCreator); +RegistryMSOps g_assignAddPrimitiveCreatorRegistry("AssignAdd", AssignAddPrimitiveCreator); +RegistryMSOps g_avgPoolPrimitiveCreatorRegistry("AvgPool", AvgPoolFusionPrimitiveCreator); +RegistryMSOps g_avgPoolFusionPrimitiveCreatorRegistry("AvgPoolFusion", AvgPoolFusionPrimitiveCreator); +RegistryMSOps g_batchNormPrimitiveCreatorRegistry("BatchNorm", BatchNormPrimitiveCreator); +RegistryMSOps g_batchToSpacePrimitiveCreatorRegistry("BatchToSpace", BatchToSpacePrimitiveCreator); +RegistryMSOps g_batchToSpaceNDPrimitiveCreatorRegistry("BatchToSpaceND", BatchToSpaceNDPrimitiveCreator); +RegistryMSOps g_biasAddPrimitiveCreatorRegistry("BiasAdd", BiasAddPrimitiveCreator); +RegistryMSOps g_bNGradPrimitiveCreatorRegistry("BNGrad", BNGradPrimitiveCreator); +RegistryMSOps g_broadcastToPrimitiveCreatorRegistry("BroadcastTo", BroadcastToPrimitiveCreator); +RegistryMSOps g_castPrimitiveCreatorRegistry("Cast", CastPrimitiveCreator); +RegistryMSOps g_ceilPrimitiveCreatorRegistry("Ceil", CeilPrimitiveCreator); +RegistryMSOps g_clipPrimitiveCreatorRegistry("Clip", ClipPrimitiveCreator); +RegistryMSOps g_concatPrimitiveCreatorRegistry("Concat", ConcatPrimitiveCreator); +// RegistryMSOps g_controlDependPrimitiveCreatorRegistry("ControlDepend", ControlDependPrimitiveCreator); +RegistryMSOps g_conv2DBackpropFilterFusionPrimitiveCreatorRegistry("Conv2DBackpropFilterFusion", Conv2DBackpropFilterFusionPrimitiveCreator); -RegistryMSOps g_Conv2DBackpropInputFusionPrimitiveCreatorRegistry("Conv2DBackpropInputFusion", +RegistryMSOps g_conv2DBackpropInputFusionPrimitiveCreatorRegistry("Conv2DBackpropInputFusion", Conv2DBackpropInputFusionPrimitiveCreator); -RegistryMSOps g_Conv2DPrimitiveCreatorRegistry("Conv2D", Conv2DFusionPrimitiveCreator); -RegistryMSOps g_Conv2DFusionPrimitiveCreatorRegistry("Conv2DFusion", Conv2DFusionPrimitiveCreator); -RegistryMSOps g_Conv2dTransposePrimitiveCreatorRegistry("Conv2dTranspose", Conv2dTransposeFusionPrimitiveCreator); -RegistryMSOps g_Conv2dTransposeFusionPrimitiveCreatorRegistry("Conv2dTransposeFusion", +RegistryMSOps g_conv2DPrimitiveCreatorRegistry("Conv2D", Conv2DFusionPrimitiveCreator); +RegistryMSOps g_conv2DFusionPrimitiveCreatorRegistry("Conv2DFusion", Conv2DFusionPrimitiveCreator); +RegistryMSOps g_conv2dTransposePrimitiveCreatorRegistry("Conv2dTranspose", Conv2dTransposeFusionPrimitiveCreator); +RegistryMSOps g_conv2dTransposeFusionPrimitiveCreatorRegistry("Conv2dTransposeFusion", Conv2dTransposeFusionPrimitiveCreator); -RegistryMSOps g_ConstantOfShapePrimitiveCreatorRegistry("ConstantOfShape", ConstantOfShapePrimitiveCreator); -RegistryMSOps g_CosPrimitiveCreatorRegistry("Cos", CosPrimitiveCreator); -RegistryMSOps g_CropPrimitiveCreatorRegistry("Crop", CropPrimitiveCreator); -RegistryMSOps g_CustomExtractFeaturesPrimitiveCreatorRegistry("CustomExtractFeatures", +RegistryMSOps g_constantOfShapePrimitiveCreatorRegistry("ConstantOfShape", ConstantOfShapePrimitiveCreator); +RegistryMSOps g_cosPrimitiveCreatorRegistry("Cos", CosPrimitiveCreator); +RegistryMSOps g_cropPrimitiveCreatorRegistry("Crop", CropPrimitiveCreator); +RegistryMSOps g_customExtractFeaturesPrimitiveCreatorRegistry("CustomExtractFeatures", CustomExtractFeaturesPrimitiveCreator); -RegistryMSOps g_CustomNormalizePrimitiveCreatorRegistry("CustomNormalize", CustomNormalizePrimitiveCreator); -RegistryMSOps g_CustomPredictPrimitiveCreatorRegistry("CustomPredict", CustomPredictPrimitiveCreator); -RegistryMSOps g_DependPrimitiveCreatorRegistry("Depend", DependPrimitiveCreator); -RegistryMSOps g_DepthToSpacePrimitiveCreatorRegistry("DepthToSpace", DepthToSpacePrimitiveCreator); -RegistryMSOps g_DetectionPostProcessPrimitiveCreatorRegistry("DetectionPostProcess", +RegistryMSOps g_customNormalizePrimitiveCreatorRegistry("CustomNormalize", CustomNormalizePrimitiveCreator); +RegistryMSOps g_customPredictPrimitiveCreatorRegistry("CustomPredict", CustomPredictPrimitiveCreator); +RegistryMSOps g_dependPrimitiveCreatorRegistry("Depend", DependPrimitiveCreator); +RegistryMSOps g_depthToSpacePrimitiveCreatorRegistry("DepthToSpace", DepthToSpacePrimitiveCreator); +RegistryMSOps g_detectionPostProcessPrimitiveCreatorRegistry("DetectionPostProcess", DetectionPostProcessPrimitiveCreator); -RegistryMSOps g_DivPrimitiveCreatorRegistry("Div", DivFusionPrimitiveCreator); -RegistryMSOps g_DivFusionPrimitiveCreatorRegistry("DivFusion", DivFusionPrimitiveCreator); -RegistryMSOps g_DivGradPrimitiveCreatorRegistry("DivGrad", DivGradPrimitiveCreator); -RegistryMSOps g_DropoutPrimitiveCreatorRegistry("Dropout", DropoutPrimitiveCreator); -RegistryMSOps g_DropoutGradPrimitiveCreatorRegistry("DropoutGrad", DropoutGradPrimitiveCreator); -RegistryMSOps g_EltwisePrimitiveCreatorRegistry("Eltwise", EltwisePrimitiveCreator); -RegistryMSOps g_EluPrimitiveCreatorRegistry("Elu", EluPrimitiveCreator); -RegistryMSOps g_EqualPrimitiveCreatorRegistry("Equal", EqualPrimitiveCreator); -RegistryMSOps g_EmbeddingLookupFusionPrimitiveCreatorRegistry("EmbeddingLookupFusion", +RegistryMSOps g_divPrimitiveCreatorRegistry("Div", DivFusionPrimitiveCreator); +RegistryMSOps g_divFusionPrimitiveCreatorRegistry("DivFusion", DivFusionPrimitiveCreator); +RegistryMSOps g_divGradPrimitiveCreatorRegistry("DivGrad", DivGradPrimitiveCreator); +RegistryMSOps g_dropoutPrimitiveCreatorRegistry("Dropout", DropoutPrimitiveCreator); +RegistryMSOps g_dropoutGradPrimitiveCreatorRegistry("DropoutGrad", DropoutGradPrimitiveCreator); +RegistryMSOps g_eltwisePrimitiveCreatorRegistry("Eltwise", EltwisePrimitiveCreator); +RegistryMSOps g_eluPrimitiveCreatorRegistry("Elu", EluPrimitiveCreator); +RegistryMSOps g_equalPrimitiveCreatorRegistry("Equal", EqualPrimitiveCreator); +RegistryMSOps g_embeddingLookupFusionPrimitiveCreatorRegistry("EmbeddingLookupFusion", EmbeddingLookupFusionPrimitiveCreator); -RegistryMSOps g_ExpandDimsPrimitiveCreatorRegistry("ExpandDims", ExpandDimsPrimitiveCreator); -RegistryMSOps g_ExpPrimitiveCreatorRegistry("Exp", ExpFusionPrimitiveCreator); -RegistryMSOps g_ExpFusionPrimitiveCreatorRegistry("ExpFusion", ExpFusionPrimitiveCreator); -RegistryMSOps g_FftImagPrimitiveCreatorRegistry("FftImag", FftImagPrimitiveCreator); -RegistryMSOps g_FftRealPrimitiveCreatorRegistry("FftReal", FftRealPrimitiveCreator); -RegistryMSOps g_FillPrimitiveCreatorRegistry("Fill", FillPrimitiveCreator); -RegistryMSOps g_FlattenPrimitiveCreatorRegistry("Flatten", FlattenPrimitiveCreator); -RegistryMSOps g_FlattenGradPrimitiveCreatorRegistry("FlattenGrad", FlattenGradPrimitiveCreator); -RegistryMSOps g_FloorPrimitiveCreatorRegistry("Floor", FloorPrimitiveCreator); -RegistryMSOps g_FloorDivPrimitiveCreatorRegistry("FloorDiv", FloorDivPrimitiveCreator); -RegistryMSOps g_FloorModPrimitiveCreatorRegistry("FloorMod", FloorModPrimitiveCreator); -RegistryMSOps g_FullConnectionPrimitiveCreatorRegistry("FullConnection", FullConnectionPrimitiveCreator); -RegistryMSOps g_FusedBatchNormPrimitiveCreatorRegistry("FusedBatchNorm", FusedBatchNormPrimitiveCreator); -RegistryMSOps g_GatherPrimitiveCreatorRegistry("Gather", GatherPrimitiveCreator); -RegistryMSOps g_GatherNdPrimitiveCreatorRegistry("GatherNd", GatherNdPrimitiveCreator); -RegistryMSOps g_GreaterPrimitiveCreatorRegistry("Greater", GreaterPrimitiveCreator); -RegistryMSOps g_GreaterEqualPrimitiveCreatorRegistry("GreaterEqual", GreaterEqualPrimitiveCreator); -RegistryMSOps g_HashtableLookupPrimitiveCreatorRegistry("HashtableLookup", HashtableLookupPrimitiveCreator); -RegistryMSOps g_InstanceNormPrimitiveCreatorRegistry("InstanceNorm", InstanceNormPrimitiveCreator); -RegistryMSOps g_LayerNormPrimitiveCreatorRegistry("LayerNorm", LayerNormFusionPrimitiveCreator); -RegistryMSOps g_LayerNormFusionPrimitiveCreatorRegistry("LayerNormFusion", LayerNormFusionPrimitiveCreator); -RegistryMSOps g_LeakyReluPrimitiveCreatorRegistry("LeakyRelu", LeakyReluPrimitiveCreator); -RegistryMSOps g_LessPrimitiveCreatorRegistry("Less", LessPrimitiveCreator); -RegistryMSOps g_LessEqualPrimitiveCreatorRegistry("LessEqual", LessEqualPrimitiveCreator); -RegistryMSOps g_LogPrimitiveCreatorRegistry("Log", LogPrimitiveCreator); -RegistryMSOps g_LogGradPrimitiveCreatorRegistry("LogGrad", LogGradPrimitiveCreator); -RegistryMSOps g_LogicalAndPrimitiveCreatorRegistry("LogicalAnd", LogicalAndPrimitiveCreator); -RegistryMSOps g_LogicalNotPrimitiveCreatorRegistry("LogicalNot", LogicalNotPrimitiveCreator); -RegistryMSOps g_LogicalOrPrimitiveCreatorRegistry("LogicalOr", LogicalOrPrimitiveCreator); -RegistryMSOps g_LpNormalizationPrimitiveCreatorRegistry("LpNormalization", LpNormalizationPrimitiveCreator); -RegistryMSOps g_LrnPrimitiveCreatorRegistry("Lrn", LrnPrimitiveCreator); -RegistryMSOps g_LshProjectionPrimitiveCreatorRegistry("LshProjection", LshProjectionPrimitiveCreator); -RegistryMSOps g_LSTMPrimitiveCreatorRegistry("LSTM", LSTMPrimitiveCreator); -RegistryMSOps g_L2NormalizeFusionPrimitiveCreatorRegistry("L2NormalizeFusion", L2NormalizeFusionPrimitiveCreator); -RegistryMSOps g_MatMulPrimitiveCreatorRegistry("MatMul", MatMulPrimitiveCreator); -RegistryMSOps g_MaximumPrimitiveCreatorRegistry("Maximum", MaximumPrimitiveCreator); -RegistryMSOps g_MaximumGradPrimitiveCreatorRegistry("MaximumGrad", MaximumGradPrimitiveCreator); -RegistryMSOps g_MaxPoolPrimitiveCreatorRegistry("MaxPool", MaxPoolFusionPrimitiveCreator); -RegistryMSOps g_MaxPoolFusionPrimitiveCreatorRegistry("MaxPoolFusion", MaxPoolFusionPrimitiveCreator); -RegistryMSOps g_MergePrimitiveCreatorRegistry("Merge", MergePrimitiveCreator); -RegistryMSOps g_MinimumPrimitiveCreatorRegistry("Minimum", MinimumPrimitiveCreator); -RegistryMSOps g_MinimumGradPrimitiveCreatorRegistry("MinimumGrad", MinimumGradPrimitiveCreator); -RegistryMSOps g_ModPrimitiveCreatorRegistry("Mod", ModPrimitiveCreator); -RegistryMSOps g_MulPrimitiveCreatorRegistry("Mul", MulFusionPrimitiveCreator); -RegistryMSOps g_MulMulFusionPrimitiveCreatorRegistry("MulFusion", MulFusionPrimitiveCreator); -RegistryMSOps g_MulGradPrimitiveCreatorRegistry("MulGrad", MulGradPrimitiveCreator); -RegistryMSOps g_NegPrimitiveCreatorRegistry("Neg", NegPrimitiveCreator); -RegistryMSOps g_NegGradPrimitiveCreatorRegistry("NegGrad", NegGradPrimitiveCreator); -RegistryMSOps g_NonMaxSuppressionPrimitiveCreatorRegistry("NonMaxSuppression", NonMaxSuppressionPrimitiveCreator); -RegistryMSOps g_NotEqualPrimitiveCreatorRegistry("NotEqual", NotEqualPrimitiveCreator); -RegistryMSOps g_OneHotPrimitiveCreatorRegistry("OneHot", OneHotPrimitiveCreator); -RegistryMSOps g_OnesLikePrimitiveCreatorRegistry("OnesLike", OnesLikePrimitiveCreator); -RegistryMSOps g_PadPrimitiveCreatorRegistry("Pad", PadFusionPrimitiveCreator); -RegistryMSOps g_PadFusionPrimitiveCreatorRegistry("PadFusion", PadFusionPrimitiveCreator); -RegistryMSOps g_PartialFusionPrimitiveCreatorRegistry("PartialFusion", PartialFusionPrimitiveCreator); -RegistryMSOps g_PowerGradPrimitiveCreatorRegistry("PowerGrad", PowerGradPrimitiveCreator); -RegistryMSOps g_PowFusionPrimitiveCreatorRegistry("PowFusion", PowFusionPrimitiveCreator); -RegistryMSOps g_PReLUFusionPrimitiveCreatorRegistry("PReLUFusion", PReLUFusionPrimitiveCreator); -RegistryMSOps g_RangePrimitiveCreatorRegistry("Range", RangePrimitiveCreator); -RegistryMSOps g_RankPrimitiveCreatorRegistry("Rank", RankPrimitiveCreator); -RegistryMSOps g_ReciprocalPrimitiveCreatorRegistry("Reciprocal", ReciprocalPrimitiveCreator); -RegistryMSOps g_RealDivPrimitiveCreatorRegistry("RealDiv", RealDivPrimitiveCreator); -RegistryMSOps g_ReducePrimitiveCreatorRegistry("Reduce", ReduceFusionPrimitiveCreator); -RegistryMSOps g_ReduceFusionPrimitiveCreatorRegistry("ReduceFusion", ReduceFusionPrimitiveCreator); -RegistryMSOps g_ReshapePrimitiveCreatorRegistry("Reshape", ReshapePrimitiveCreator); -RegistryMSOps g_ResizePrimitiveCreatorRegistry("Resize", ResizePrimitiveCreator); -RegistryMSOps g_ReverseV2PrimitiveCreatorRegistry("ReverseV2", ReverseV2PrimitiveCreator); -RegistryMSOps g_ReverseSequencePrimitiveCreatorRegistry("ReverseSequence", ReverseSequencePrimitiveCreator); -RegistryMSOps g_RfftPrimitiveCreatorRegistry("Rfft", RfftPrimitiveCreator); -RegistryMSOps g_ROIPoolingPrimitiveCreatorRegistry("ROIPooling", ROIPoolingPrimitiveCreator); -RegistryMSOps g_RoundPrimitiveCreatorRegistry("Round", RoundPrimitiveCreator); -RegistryMSOps g_RsqrtPrimitiveCreatorRegistry("Rsqrt", RsqrtPrimitiveCreator); -RegistryMSOps g_QuantDTypeCastPrimitiveCreatorRegistry("QuantDTypeCast", QuantDTypeCastPrimitiveCreator); -RegistryMSOps g_ScalePrimitiveCreatorRegistry("Scale", ScaleFusionPrimitiveCreator); -RegistryMSOps g_ScaleFusionPrimitiveCreatorRegistry("ScaleFusion", ScaleFusionPrimitiveCreator); -RegistryMSOps g_ShapePrimitiveCreatorRegistry("Shape", ShapePrimitiveCreator); -RegistryMSOps g_SigmoidCrossEntropyWithLogitsPrimitiveCreatorRegistry("SigmoidCrossEntropyWithLogits", +RegistryMSOps g_expandDimsPrimitiveCreatorRegistry("ExpandDims", ExpandDimsPrimitiveCreator); +RegistryMSOps g_expPrimitiveCreatorRegistry("Exp", ExpFusionPrimitiveCreator); +RegistryMSOps g_expFusionPrimitiveCreatorRegistry("ExpFusion", ExpFusionPrimitiveCreator); +RegistryMSOps g_fftImagPrimitiveCreatorRegistry("FftImag", FftImagPrimitiveCreator); +RegistryMSOps g_fftRealPrimitiveCreatorRegistry("FftReal", FftRealPrimitiveCreator); +RegistryMSOps g_fillPrimitiveCreatorRegistry("Fill", FillPrimitiveCreator); +RegistryMSOps g_flattenPrimitiveCreatorRegistry("Flatten", FlattenPrimitiveCreator); +RegistryMSOps g_flattenGradPrimitiveCreatorRegistry("FlattenGrad", FlattenGradPrimitiveCreator); +RegistryMSOps g_floorPrimitiveCreatorRegistry("Floor", FloorPrimitiveCreator); +RegistryMSOps g_floorDivPrimitiveCreatorRegistry("FloorDiv", FloorDivPrimitiveCreator); +RegistryMSOps g_floorModPrimitiveCreatorRegistry("FloorMod", FloorModPrimitiveCreator); +RegistryMSOps g_fullConnectionPrimitiveCreatorRegistry("FullConnection", FullConnectionPrimitiveCreator); +RegistryMSOps g_fusedBatchNormPrimitiveCreatorRegistry("FusedBatchNorm", FusedBatchNormPrimitiveCreator); +RegistryMSOps g_gatherPrimitiveCreatorRegistry("Gather", GatherPrimitiveCreator); +RegistryMSOps g_gatherNdPrimitiveCreatorRegistry("GatherNd", GatherNdPrimitiveCreator); +RegistryMSOps g_greaterPrimitiveCreatorRegistry("Greater", GreaterPrimitiveCreator); +RegistryMSOps g_greaterEqualPrimitiveCreatorRegistry("GreaterEqual", GreaterEqualPrimitiveCreator); +RegistryMSOps g_hashtableLookupPrimitiveCreatorRegistry("HashtableLookup", HashtableLookupPrimitiveCreator); +RegistryMSOps g_instanceNormPrimitiveCreatorRegistry("InstanceNorm", InstanceNormPrimitiveCreator); +RegistryMSOps g_layerNormPrimitiveCreatorRegistry("LayerNorm", LayerNormFusionPrimitiveCreator); +RegistryMSOps g_layerNormFusionPrimitiveCreatorRegistry("LayerNormFusion", LayerNormFusionPrimitiveCreator); +RegistryMSOps g_leakyReluPrimitiveCreatorRegistry("LeakyRelu", LeakyReluPrimitiveCreator); +RegistryMSOps g_lessPrimitiveCreatorRegistry("Less", LessPrimitiveCreator); +RegistryMSOps g_lessEqualPrimitiveCreatorRegistry("LessEqual", LessEqualPrimitiveCreator); +RegistryMSOps g_logPrimitiveCreatorRegistry("Log", LogPrimitiveCreator); +RegistryMSOps g_logGradPrimitiveCreatorRegistry("LogGrad", LogGradPrimitiveCreator); +RegistryMSOps g_logicalAndPrimitiveCreatorRegistry("LogicalAnd", LogicalAndPrimitiveCreator); +RegistryMSOps g_logicalNotPrimitiveCreatorRegistry("LogicalNot", LogicalNotPrimitiveCreator); +RegistryMSOps g_logicalOrPrimitiveCreatorRegistry("LogicalOr", LogicalOrPrimitiveCreator); +RegistryMSOps g_lpNormalizationPrimitiveCreatorRegistry("LpNormalization", LpNormalizationPrimitiveCreator); +RegistryMSOps g_lrnPrimitiveCreatorRegistry("Lrn", LrnPrimitiveCreator); +RegistryMSOps g_lshProjectionPrimitiveCreatorRegistry("LshProjection", LshProjectionPrimitiveCreator); +RegistryMSOps g_lSTMPrimitiveCreatorRegistry("LSTM", LSTMPrimitiveCreator); +RegistryMSOps g_l2NormalizeFusionPrimitiveCreatorRegistry("L2NormalizeFusion", L2NormalizeFusionPrimitiveCreator); +RegistryMSOps g_matMulPrimitiveCreatorRegistry("MatMul", MatMulPrimitiveCreator); +RegistryMSOps g_maximumPrimitiveCreatorRegistry("Maximum", MaximumPrimitiveCreator); +RegistryMSOps g_maximumGradPrimitiveCreatorRegistry("MaximumGrad", MaximumGradPrimitiveCreator); +RegistryMSOps g_maxPoolPrimitiveCreatorRegistry("MaxPool", MaxPoolFusionPrimitiveCreator); +RegistryMSOps g_maxPoolFusionPrimitiveCreatorRegistry("MaxPoolFusion", MaxPoolFusionPrimitiveCreator); +RegistryMSOps g_mergePrimitiveCreatorRegistry("Merge", MergePrimitiveCreator); +RegistryMSOps g_minimumPrimitiveCreatorRegistry("Minimum", MinimumPrimitiveCreator); +RegistryMSOps g_minimumGradPrimitiveCreatorRegistry("MinimumGrad", MinimumGradPrimitiveCreator); +RegistryMSOps g_modPrimitiveCreatorRegistry("Mod", ModPrimitiveCreator); +RegistryMSOps g_mulPrimitiveCreatorRegistry("Mul", MulFusionPrimitiveCreator); +RegistryMSOps g_mulMulFusionPrimitiveCreatorRegistry("MulFusion", MulFusionPrimitiveCreator); +RegistryMSOps g_mulGradPrimitiveCreatorRegistry("MulGrad", MulGradPrimitiveCreator); +RegistryMSOps g_negPrimitiveCreatorRegistry("Neg", NegPrimitiveCreator); +RegistryMSOps g_negGradPrimitiveCreatorRegistry("NegGrad", NegGradPrimitiveCreator); +RegistryMSOps g_nonMaxSuppressionPrimitiveCreatorRegistry("NonMaxSuppression", NonMaxSuppressionPrimitiveCreator); +RegistryMSOps g_notEqualPrimitiveCreatorRegistry("NotEqual", NotEqualPrimitiveCreator); +RegistryMSOps g_oneHotPrimitiveCreatorRegistry("OneHot", OneHotPrimitiveCreator); +RegistryMSOps g_onesLikePrimitiveCreatorRegistry("OnesLike", OnesLikePrimitiveCreator); +RegistryMSOps g_padPrimitiveCreatorRegistry("Pad", PadFusionPrimitiveCreator); +RegistryMSOps g_padFusionPrimitiveCreatorRegistry("PadFusion", PadFusionPrimitiveCreator); +RegistryMSOps g_partialFusionPrimitiveCreatorRegistry("PartialFusion", PartialFusionPrimitiveCreator); +RegistryMSOps g_powerGradPrimitiveCreatorRegistry("PowerGrad", PowerGradPrimitiveCreator); +RegistryMSOps g_powFusionPrimitiveCreatorRegistry("PowFusion", PowFusionPrimitiveCreator); +RegistryMSOps g_pReLUFusionPrimitiveCreatorRegistry("PReLUFusion", PReLUFusionPrimitiveCreator); +RegistryMSOps g_rangePrimitiveCreatorRegistry("Range", RangePrimitiveCreator); +RegistryMSOps g_rankPrimitiveCreatorRegistry("Rank", RankPrimitiveCreator); +RegistryMSOps g_reciprocalPrimitiveCreatorRegistry("Reciprocal", ReciprocalPrimitiveCreator); +RegistryMSOps g_realDivPrimitiveCreatorRegistry("RealDiv", RealDivPrimitiveCreator); +RegistryMSOps g_reducePrimitiveCreatorRegistry("Reduce", ReduceFusionPrimitiveCreator); +RegistryMSOps g_reduceFusionPrimitiveCreatorRegistry("ReduceFusion", ReduceFusionPrimitiveCreator); +RegistryMSOps g_reshapePrimitiveCreatorRegistry("Reshape", ReshapePrimitiveCreator); +RegistryMSOps g_resizePrimitiveCreatorRegistry("Resize", ResizePrimitiveCreator); +RegistryMSOps g_reverseV2PrimitiveCreatorRegistry("ReverseV2", ReverseV2PrimitiveCreator); +RegistryMSOps g_reverseSequencePrimitiveCreatorRegistry("ReverseSequence", ReverseSequencePrimitiveCreator); +RegistryMSOps g_rfftPrimitiveCreatorRegistry("Rfft", RfftPrimitiveCreator); +RegistryMSOps g_rOIPoolingPrimitiveCreatorRegistry("ROIPooling", ROIPoolingPrimitiveCreator); +RegistryMSOps g_roundPrimitiveCreatorRegistry("Round", RoundPrimitiveCreator); +RegistryMSOps g_rsqrtPrimitiveCreatorRegistry("Rsqrt", RsqrtPrimitiveCreator); +RegistryMSOps g_quantDTypeCastPrimitiveCreatorRegistry("QuantDTypeCast", QuantDTypeCastPrimitiveCreator); +RegistryMSOps g_scalePrimitiveCreatorRegistry("Scale", ScaleFusionPrimitiveCreator); +RegistryMSOps g_scaleFusionPrimitiveCreatorRegistry("ScaleFusion", ScaleFusionPrimitiveCreator); +RegistryMSOps g_shapePrimitiveCreatorRegistry("Shape", ShapePrimitiveCreator); +RegistryMSOps g_sigmoidCrossEntropyWithLogitsPrimitiveCreatorRegistry("SigmoidCrossEntropyWithLogits", SigmoidCrossEntropyWithLogitsPrimitiveCreator); -RegistryMSOps g_SigmoidCrossEntropyWithLogitsGradPrimitiveCreatorRegistry( +RegistryMSOps g_sigmoidCrossEntropyWithLogitsGradPrimitiveCreatorRegistry( "SigmoidCrossEntropyWithLogitsGrad", SigmoidCrossEntropyWithLogitsGradPrimitiveCreator); -RegistryMSOps g_SinPrimitiveCreatorRegistry("Sin", SinPrimitiveCreator); -RegistryMSOps g_SkipGramPrimitiveCreatorRegistry("SkipGram", SkipGramPrimitiveCreator); -RegistryMSOps g_SliceFusionPrimitiveCreatorRegistry("SliceFusion", SliceFusionPrimitiveCreator); -RegistryMSOps g_SmoothL1LossPrimitiveCreatorRegistry("SmoothL1Loss", SmoothL1LossPrimitiveCreator); -RegistryMSOps g_SmoothL1LossGradPrimitiveCreatorRegistry("SmoothL1LossGrad", SmoothL1LossGradPrimitiveCreator); -RegistryMSOps g_SoftmaxPrimitiveCreatorRegistry("Softmax", SoftmaxPrimitiveCreator); -RegistryMSOps g_SpaceToBatchPrimitiveCreatorRegistry("SpaceToBatch", SpaceToBatchPrimitiveCreator); -RegistryMSOps g_SpaceToBatchNDPrimitiveCreatorRegistry("SpaceToBatchND", SpaceToBatchNDPrimitiveCreator); -RegistryMSOps g_SpaceToDepthPrimitiveCreatorRegistry("SpaceToDepth", SpaceToDepthPrimitiveCreator); -RegistryMSOps g_SparseToDensePrimitiveCreatorRegistry("SparseToDense", SparseToDensePrimitiveCreator); -RegistryMSOps g_SplitPrimitiveCreatorRegistry("Split", SplitPrimitiveCreator); -RegistryMSOps g_SqrtPrimitiveCreatorRegistry("Sqrt", SqrtPrimitiveCreator); -RegistryMSOps g_SqueezePrimitiveCreatorRegistry("Squeeze", SqueezePrimitiveCreator); -RegistryMSOps g_SquarePrimitiveCreatorRegistry("Square", SquarePrimitiveCreator); -RegistryMSOps g_SquaredDifferencePrimitiveCreatorRegistry("SquaredDifference", SquaredDifferencePrimitiveCreator); -RegistryMSOps g_StackPrimitiveCreatorRegistry("Stack", StackPrimitiveCreator); -RegistryMSOps g_StridedSlicePrimitiveCreatorRegistry("StridedSlice", StridedSlicePrimitiveCreator); -RegistryMSOps g_SubPrimitiveCreatorRegistry("Sub", SubFusionPrimitiveCreator); -RegistryMSOps g_SubFusionPrimitiveCreatorRegistry("SubFusion", SubFusionPrimitiveCreator); -RegistryMSOps g_SubGradPrimitiveCreatorRegistry("SubGrad", SubGradPrimitiveCreator); -RegistryMSOps g_SwitchPrimitiveCreatorRegistry("Switch", SwitchPrimitiveCreator); -RegistryMSOps g_TensorListFromTensorPrimitiveCreatorRegistry("TensorListFromTensor", +RegistryMSOps g_sinPrimitiveCreatorRegistry("Sin", SinPrimitiveCreator); +RegistryMSOps g_skipGramPrimitiveCreatorRegistry("SkipGram", SkipGramPrimitiveCreator); +RegistryMSOps g_sliceFusionPrimitiveCreatorRegistry("SliceFusion", SliceFusionPrimitiveCreator); +RegistryMSOps g_smoothL1LossPrimitiveCreatorRegistry("SmoothL1Loss", SmoothL1LossPrimitiveCreator); +RegistryMSOps g_smoothL1LossGradPrimitiveCreatorRegistry("SmoothL1LossGrad", SmoothL1LossGradPrimitiveCreator); +RegistryMSOps g_softmaxPrimitiveCreatorRegistry("Softmax", SoftmaxPrimitiveCreator); +RegistryMSOps g_spaceToBatchPrimitiveCreatorRegistry("SpaceToBatch", SpaceToBatchPrimitiveCreator); +RegistryMSOps g_spaceToBatchNDPrimitiveCreatorRegistry("SpaceToBatchND", SpaceToBatchNDPrimitiveCreator); +RegistryMSOps g_spaceToDepthPrimitiveCreatorRegistry("SpaceToDepth", SpaceToDepthPrimitiveCreator); +RegistryMSOps g_sparseToDensePrimitiveCreatorRegistry("SparseToDense", SparseToDensePrimitiveCreator); +RegistryMSOps g_splitPrimitiveCreatorRegistry("Split", SplitPrimitiveCreator); +RegistryMSOps g_sqrtPrimitiveCreatorRegistry("Sqrt", SqrtPrimitiveCreator); +RegistryMSOps g_squeezePrimitiveCreatorRegistry("Squeeze", SqueezePrimitiveCreator); +RegistryMSOps g_squarePrimitiveCreatorRegistry("Square", SquarePrimitiveCreator); +RegistryMSOps g_squaredDifferencePrimitiveCreatorRegistry("SquaredDifference", SquaredDifferencePrimitiveCreator); +RegistryMSOps g_stackPrimitiveCreatorRegistry("Stack", StackPrimitiveCreator); +RegistryMSOps g_stridedSlicePrimitiveCreatorRegistry("StridedSlice", StridedSlicePrimitiveCreator); +RegistryMSOps g_subPrimitiveCreatorRegistry("Sub", SubFusionPrimitiveCreator); +RegistryMSOps g_subFusionPrimitiveCreatorRegistry("SubFusion", SubFusionPrimitiveCreator); +RegistryMSOps g_subGradPrimitiveCreatorRegistry("SubGrad", SubGradPrimitiveCreator); +RegistryMSOps g_switchPrimitiveCreatorRegistry("Switch", SwitchPrimitiveCreator); +RegistryMSOps g_tensorListFromTensorPrimitiveCreatorRegistry("TensorListFromTensor", TensorListFromTensorPrimitiveCreator); -RegistryMSOps g_TensorListGetItemPrimitiveCreatorRegistry("TensorListGetItem", TensorListGetItemPrimitiveCreator); -RegistryMSOps g_TensorListReservePrimitiveCreatorRegistry("TensorListReserve", TensorListReservePrimitiveCreator); -RegistryMSOps g_TensorListSetItemPrimitiveCreatorRegistry("TensorListSetItem", TensorListSetItemPrimitiveCreator); -RegistryMSOps g_TensorListStackPrimitiveCreatorRegistry("TensorListStack", TensorListStackPrimitiveCreator); -RegistryMSOps g_TileFusionPrimitiveCreatorRegistry("TileFusion", TileFusionPrimitiveCreator); -RegistryMSOps g_TopKPrimitiveCreatorRegistry("TopK", TopKFusionPrimitiveCreator); -RegistryMSOps g_TopKFusionPrimitiveCreatorRegistry("TopKFusion", TopKFusionPrimitiveCreator); -RegistryMSOps g_TransposePrimitiveCreatorxRegistry("Transpose", TransposePrimitiveCreator); -RegistryMSOps g_UniquePrimitiveCreatorRegistry("Unique", UniquePrimitiveCreator); -RegistryMSOps g_UnpackPrimitiveCreatorRegistry("Unpack", UnpackPrimitiveCreator); -RegistryMSOps g_UnsortedSegmentSumPrimitiveCreatorRegistry("UnsortedSegmentSum", UnsortedSegmentSumPrimitiveCreator); -RegistryMSOps g_UnsqueezePrimitiveCreatorRegistry("Unsqueeze", UnsqueezePrimitiveCreator); -RegistryMSOps g_WherePrimitiveCreatorRegistry("Where", WherePrimitiveCreator); -RegistryMSOps g_ZerosLikePrimitiveCreatorRegistry("ZerosLike", ZerosLikePrimitiveCreator); +RegistryMSOps g_tensorListGetItemPrimitiveCreatorRegistry("TensorListGetItem", TensorListGetItemPrimitiveCreator); +RegistryMSOps g_tensorListReservePrimitiveCreatorRegistry("TensorListReserve", TensorListReservePrimitiveCreator); +RegistryMSOps g_tensorListSetItemPrimitiveCreatorRegistry("TensorListSetItem", TensorListSetItemPrimitiveCreator); +RegistryMSOps g_tensorListStackPrimitiveCreatorRegistry("TensorListStack", TensorListStackPrimitiveCreator); +RegistryMSOps g_tileFusionPrimitiveCreatorRegistry("TileFusion", TileFusionPrimitiveCreator); +RegistryMSOps g_topKPrimitiveCreatorRegistry("TopK", TopKFusionPrimitiveCreator); +RegistryMSOps g_topKFusionPrimitiveCreatorRegistry("TopKFusion", TopKFusionPrimitiveCreator); +RegistryMSOps g_transposePrimitiveCreatorxRegistry("Transpose", TransposePrimitiveCreator); +RegistryMSOps g_uniquePrimitiveCreatorRegistry("Unique", UniquePrimitiveCreator); +RegistryMSOps g_unpackPrimitiveCreatorRegistry("Unpack", UnpackPrimitiveCreator); +RegistryMSOps g_unsortedSegmentSumPrimitiveCreatorRegistry("UnsortedSegmentSum", UnsortedSegmentSumPrimitiveCreator); +RegistryMSOps g_unsqueezePrimitiveCreatorRegistry("Unsqueeze", UnsqueezePrimitiveCreator); +RegistryMSOps g_wherePrimitiveCreatorRegistry("Where", WherePrimitiveCreator); +RegistryMSOps g_zerosLikePrimitiveCreatorRegistry("ZerosLike", ZerosLikePrimitiveCreator); } // namespace lite } // namespace mindspore diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_activation_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_activation_parser.cc index 9e00d308b5..ad802be17e 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_activation_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_activation_parser.cc @@ -21,59 +21,43 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffeReluParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::Activation(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new ReLU failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_activation_type(mindspore::ActivationType::RELU); + prim->set_activation_type(mindspore::ActivationType::RELU); if (proto.has_relu_param() && proto.relu_param().has_negative_slope()) { float negative_slope = proto.relu_param().negative_slope(); if (negative_slope != 0) { - primitive_c->set_activation_type(mindspore::ActivationType::LEAKY_RELU); - primitive_c->set_alpha(negative_slope); + prim->set_activation_type(mindspore::ActivationType::LEAKY_RELU); + prim->set_alpha(negative_slope); } } - return primitive_c; + return prim.release(); } ops::PrimitiveC *CaffeRelu6Parser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::Activation(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Relu6 failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_activation_type(mindspore::ActivationType::RELU6); + prim->set_activation_type(mindspore::ActivationType::RELU6); - return primitive_c; + return prim.release(); } ops::PrimitiveC *CaffeSigmoidParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::Activation(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Sigmoid failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_activation_type(mindspore::ActivationType::SIGMOID); + prim->set_activation_type(mindspore::ActivationType::SIGMOID); - return primitive_c; + return prim.release(); } ops::PrimitiveC *CaffeTanhParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::Activation(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Tanh failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_activation_type(mindspore::ActivationType::TANH); + prim->set_activation_type(mindspore::ActivationType::TANH); - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffeReluParser("ReLU", new CaffeReluParser()); 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 95d01f4e3d..f9d8748f4c 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_argmax_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_argmax_parser.cc @@ -21,28 +21,24 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffeArgMaxParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::ArgMaxFusion(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new ArgMaxFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_keep_dims(true); - primitive_c->set_out_max_value(false); - primitive_c->set_top_k(1); + prim->set_keep_dims(true); + prim->set_out_max_value(false); + prim->set_top_k(1); const caffe::ArgMaxParameter &argmaxParam = proto.argmax_param(); if (argmaxParam.has_out_max_val()) { - primitive_c->set_out_max_value(argmaxParam.out_max_val()); + prim->set_out_max_value(argmaxParam.out_max_val()); } if (argmaxParam.has_top_k()) { - primitive_c->set_top_k(argmaxParam.top_k()); + prim->set_top_k(argmaxParam.top_k()); } if (argmaxParam.has_axis()) { - primitive_c->set_axis(argmaxParam.axis()); + prim->set_axis(argmaxParam.axis()); } - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffeArgMaxParser("ArgMax", new CaffeArgMaxParser()); 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 611e7a638d..fd3678191f 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_batchnorm_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_batchnorm_parser.cc @@ -24,11 +24,10 @@ namespace mindspore { namespace lite { using STATUS = int; ops::PrimitiveC *CaffeBatchNormParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::BatchNorm(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new BatchNorm failed"; - return nullptr; - } + auto prim = std::make_unique(); + + prim->set_is_training(false); + prim->set_format(mindspore::NCHW); const caffe::BatchNormParameter &batchNormParam = proto.batch_norm_param(); if (proto.bottom_size() != 1) { @@ -46,12 +45,9 @@ ops::PrimitiveC *CaffeBatchNormParser::Parse(const caffe::LayerParameter &proto, if (batchNormParam.has_eps() && std::fabs(1e-5 - batchNormParam.eps()) >= 1e-9) { epsilon = batchNormParam.eps(); } - primitive_c->set_epsilon(epsilon); - - primitive_c->set_is_training(false); - primitive_c->set_format(mindspore::NCHW); + prim->set_epsilon(epsilon); - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffeBatchNormParser("BatchNorm", new CaffeBatchNormParser()); 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 9b68414d1c..4582425231 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_concat_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_concat_parser.cc @@ -21,11 +21,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffeConcatParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::Concat(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Concat failed"; - return nullptr; - } + auto prim = std::make_unique(); const caffe::ConcatParameter &concatParam = proto.concat_param(); if (concatParam.has_axis() && concatParam.has_concat_dim()) { @@ -45,9 +41,9 @@ ops::PrimitiveC *CaffeConcatParser::Parse(const caffe::LayerParameter &proto, co MS_LOG(DEBUG) << "set axis: " << concatParam.axis(); axis = concatParam.axis(); } - primitive_c->set_axis(axis); + prim->set_axis(axis); - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffeConcatParser("Concat", new CaffeConcatParser()); 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 7fad84f557..381d0b5e64 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_convolution_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_convolution_parser.cc @@ -22,61 +22,52 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffeConvolutionParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::Conv2DFusion(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Conv2DFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_pad({0, 0, 0, 0}); - primitive_c->set_pad_mode(mindspore::PadMode::PAD); - primitive_c->set_format(mindspore::Format::NCHW); - primitive_c->set_activation_type(mindspore::NO_ACTIVATION); + prim->set_pad({0, 0, 0, 0}); + prim->set_pad_mode(mindspore::PadMode::PAD); + prim->set_format(mindspore::Format::NCHW); + prim->set_activation_type(mindspore::NO_ACTIVATION); const caffe::ConvolutionParameter &convParam = proto.convolution_param(); // parse kernel std::vector kernel(2, 0); if (CaffeConvBaseParser::ParseKernels(convParam, &kernel) != RET_OK) { - MS_LOG(ERROR) << "ParseKernels for " << proto.name().c_str() << " failed"; return nullptr; } - primitive_c->set_kernel_size(kernel); + prim->set_kernel_size(kernel); // parse stride std::vector stride(2, 0); if (CaffeConvBaseParser::ParseStrides(convParam, &stride) != RET_OK) { - MS_LOG(ERROR) << "ParseStrides for " << proto.name().c_str() << " failed"; return nullptr; } - primitive_c->set_stride(stride); + prim->set_stride(stride); // parse dilation std::vector dilation(2, 0); if (CaffeConvBaseParser::ParseDilations(convParam, &dilation) != RET_OK) { - MS_LOG(ERROR) << "ParseDilations for " << proto.name().c_str() << " failed"; return nullptr; } - primitive_c->set_dilation(dilation); + prim->set_dilation(dilation); // parse pad std::vector pad(4, 0); if (CaffeConvBaseParser::ParsePads(convParam, &pad) != RET_OK) { - MS_LOG(ERROR) << "ParsePads for " << proto.name().c_str() << " failed"; return nullptr; } - primitive_c->set_pad_list(pad); + prim->set_pad_list(pad); // parse channelOut int channel_out = 0; if (CaffeConvBaseParser::ParseChannelOut(convParam, &channel_out) != RET_OK) { - MS_LOG(ERROR) << "conv channel out failed"; return nullptr; } - primitive_c->set_out_channel(channel_out); + prim->set_out_channel(channel_out); // parse group auto group = CaffeConvBaseParser::ParseGroup(convParam, proto.type()); - primitive_c->set_group(group); + prim->set_group(group); // parse channelIn if (weight.blobs_size() < 1) { @@ -85,11 +76,13 @@ ops::PrimitiveC *CaffeConvolutionParser::Parse(const caffe::LayerParameter &prot } auto &weightBlob = weight.blobs(0); auto channelIn = weightBlob.has_shape() ? weightBlob.shape().dim(1) * group : weightBlob.channels() * group; - primitive_c->set_in_channel(channelIn); + prim->set_in_channel(channelIn); + if (group != 1) { - primitive_c->AddAttr(ops::kIsDepthWise, MakeValue(true)); + prim->AddAttr(ops::kIsDepthWise, MakeValue(true)); } - return primitive_c; + + return prim.release(); } CaffeNodeRegistrar g_caffeConvolutionParser("Convolution", new CaffeConvolutionParser()); 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 aaa8feabbe..d890d7c49a 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_crop_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_crop_parser.cc @@ -21,25 +21,21 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffeCropParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::Crop(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Crop failed"; - return nullptr; - } + auto prim = std::make_unique(); if (!proto.has_crop_param()) { - primitive_c->set_axis(2); + prim->set_axis(2); std::vector offsets(2, 0); - primitive_c->set_offsets(offsets); + prim->set_offsets(offsets); } else { const caffe::CropParameter &cropParam = proto.crop_param(); if (cropParam.has_axis()) { if (cropParam.axis() == -1) { MS_LOG(WARNING) << "axis with -1 may lead to calculation errors when input less than 4 dims."; } - primitive_c->set_axis(cropParam.axis()); + prim->set_axis(cropParam.axis()); } else { - primitive_c->set_axis(2); + prim->set_axis(2); } if (cropParam.offset_size() != 0) { @@ -48,11 +44,11 @@ ops::PrimitiveC *CaffeCropParser::Parse(const caffe::LayerParameter &proto, cons for (int i = 0; i < cropParam.offset_size(); i++) { offsets.push_back(cropParam.offset(i)); } - primitive_c->set_offsets(offsets); + prim->set_offsets(offsets); } } - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffeCropParser("Crop", new CaffeCropParser()); 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 b71f49d986..36fcc287e5 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_deconvolution_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_deconvolution_parser.cc @@ -20,78 +20,69 @@ namespace mindspore { namespace lite { - ops::PrimitiveC *CaffeDeconvolutionParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::Conv2dTransposeFusion(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Conv2dTransposeFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_pad({0, 0, 0, 0}); - primitive_c->set_format(mindspore::Format::NCHW); - primitive_c->set_pad_mode(mindspore::PadMode::PAD); + prim->set_pad({0, 0, 0, 0}); + prim->set_format(mindspore::Format::NCHW); + prim->set_pad_mode(mindspore::PadMode::PAD); const caffe::ConvolutionParameter &convParam = proto.convolution_param(); // parse pad std::vector pad(4, 0); if (CaffeConvBaseParser::ParsePads(convParam, &pad) != RET_OK) { - MS_LOG(ERROR) << "ParsePads for " << proto.name().c_str() << " failed"; return nullptr; } - primitive_c->set_pad_list({pad[0], pad[1], pad[2], pad[3]}); + prim->set_pad_list({pad[0], pad[1], pad[2], pad[3]}); // parse stride std::vector stride(2, 0); if (CaffeConvBaseParser::ParseStrides(convParam, &stride) != RET_OK) { - MS_LOG(ERROR) << "ParseStrides for " << proto.name().c_str() << " failed"; return nullptr; } - primitive_c->set_stride({stride[0], stride[1]}); + prim->set_stride({stride[0], stride[1]}); // parse dilation std::vector dilation(2, 0); if (CaffeConvBaseParser::ParseDilations(convParam, &dilation) != RET_OK) { - MS_LOG(ERROR) << "ParseDilations for " << proto.name().c_str() << " failed"; return nullptr; } - primitive_c->set_dilation({dilation[0], dilation[1]}); + prim->set_dilation({dilation[0], dilation[1]}); // parse kernel std::vector kernel(2, 0); if (CaffeConvBaseParser::ParseKernels(convParam, &kernel) != RET_OK) { - MS_LOG(ERROR) << "ParseKernels for " << proto.name().c_str() << " failed"; return nullptr; } - primitive_c->set_kernel_size({kernel[0], kernel[1]}); + prim->set_kernel_size({kernel[0], kernel[1]}); // parse group auto group = CaffeConvBaseParser::ParseGroup(convParam, proto.type()); - primitive_c->set_group(group); + prim->set_group(group); // parse channelOut int32_t channelOut; if (CaffeConvBaseParser::ParseChannelOut(convParam, &channelOut) != RET_OK) { - MS_LOG(ERROR) << "deconv channel get failed"; return nullptr; } - primitive_c->set_out_channel((int64_t)channelOut); + prim->set_out_channel((int64_t)channelOut); // parse channelIN auto &weightBlob = weight.blobs(0); if (weightBlob.has_shape()) { if (group == 1) - primitive_c->set_in_channel(weightBlob.shape().dim(0) * group); + prim->set_in_channel(weightBlob.shape().dim(0) * group); else - primitive_c->set_in_channel(weightBlob.shape().dim(1) * group); + prim->set_in_channel(weightBlob.shape().dim(1) * group); } else { - primitive_c->set_in_channel(weightBlob.num() * group); + prim->set_in_channel(weightBlob.num() * group); } if (group != 1) { - primitive_c->AddAttr(ops::kIsDepthWise, MakeValue(true)); + prim->AddAttr(ops::kIsDepthWise, MakeValue(true)); } - return primitive_c; + + return prim.release(); } CaffeNodeRegistrar g_caffeDeconvolutionParser("Deconvolution", new CaffeDeconvolutionParser()); 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 8e792eba4a..0290f22119 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_eltwise_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_eltwise_parser.cc @@ -22,11 +22,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffeEltwiseParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::Eltwise(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Eltwise failed"; - return nullptr; - } + auto prim = std::make_unique(); if (proto.bottom_size() < 2) { MS_LOG(ERROR) << "Eltwise Op " << proto.name() << " need at least 2 inputs,but input size is " @@ -55,23 +51,23 @@ ops::PrimitiveC *CaffeEltwiseParser::Parse(const caffe::LayerParameter &proto, c if (proto.has_eltwise_param() && eltwiseParam.has_operation()) { switch (eltwiseParam.operation()) { case caffe::EltwiseParameter::PROD: - primitive_c->set_mode(mindspore::EltwiseMode::PROD); + prim->set_mode(mindspore::EltwiseMode::PROD); break; case caffe::EltwiseParameter::SUM: - primitive_c->set_mode(mindspore::EltwiseMode::SUM); + prim->set_mode(mindspore::EltwiseMode::SUM); break; case caffe::EltwiseParameter::MAX: - primitive_c->set_mode(mindspore::EltwiseMode::MAXIMUM); + prim->set_mode(mindspore::EltwiseMode::MAXIMUM); break; default: MS_LOG(ERROR) << "Eltwise parse params fail, unsupported operation: " << eltwiseParam.operation(); return nullptr; } } else { - primitive_c->set_mode(mindspore::EltwiseMode::SUM); + prim->set_mode(mindspore::EltwiseMode::SUM); } - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffeEltwiseParser("Eltwise", new CaffeEltwiseParser()); diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_elu_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_elu_parser.cc index 538d5efb46..5e53728916 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_elu_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_elu_parser.cc @@ -21,20 +21,16 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffeEluParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::Elu(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Elu failed"; - return nullptr; - } + auto prim = std::make_unique(); if (proto.has_elu_param()) { const caffe::ELUParameter &eluParameter = proto.elu_param(); if (eluParameter.has_alpha()) { - primitive_c->set_alpha(eluParameter.alpha()); + prim->set_alpha(eluParameter.alpha()); } } - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffeEluParser("ELU", new CaffeEluParser()); diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_exp_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_exp_parser.cc index d8727c12a4..1ae3a8625b 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_exp_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_exp_parser.cc @@ -22,29 +22,26 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffeExpParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::ExpFusion(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new ExpFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); + const caffe::ExpParameter &exp_param = proto.exp_param(); if (exp_param.has_base()) { - primitive_c->set_base(exp_param.base()); + prim->set_base(exp_param.base()); } else { - primitive_c->set_base(-1); // -1 represent base = e + prim->set_base(-1); // -1 represent base = e } if (exp_param.has_scale()) { - primitive_c->set_scale(exp_param.scale()); + prim->set_scale(exp_param.scale()); } else { - primitive_c->set_scale(1); + prim->set_scale(1); } if (exp_param.has_shift()) { - primitive_c->set_shift(exp_param.shift()); + prim->set_shift(exp_param.shift()); } else { - primitive_c->set_shift(0); + prim->set_shift(0); } - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffeExpParser("Exp", new CaffeExpParser()); 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 ca02ee1edb..6d892bed08 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_flatten_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_flatten_parser.cc @@ -21,13 +21,9 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffeFlattenParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::Flatten(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Flatten failed"; - return nullptr; - } + auto prim = std::make_unique(); - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_CaffeFlattenParser("Flatten", new CaffeFlattenParser()); 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 9a4c2d5ba1..b8a92308f8 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_innerproduct_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_innerproduct_parser.cc @@ -22,11 +22,9 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffeInnerProductParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::FullConnection(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new FullConnection failed"; - return nullptr; - } + auto prim = std::make_unique(); + + prim->set_activation_type(mindspore::ActivationType::NO_ACTIVATION); const caffe::InnerProductParameter &innerProductParam = proto.inner_product_param(); if (!innerProductParam.has_num_output()) { @@ -35,19 +33,17 @@ ops::PrimitiveC *CaffeInnerProductParser::Parse(const caffe::LayerParameter &pro } if (innerProductParam.axis() == 1) { - primitive_c->set_axis(1); - primitive_c->set_use_axis(true); + prim->set_axis(1); + prim->set_use_axis(true); } else { MS_LOG(ERROR) << "InnerProduct Parse axis only support default 1, but actually " << innerProductParam.axis(); return nullptr; } if (innerProductParam.bias_term()) { - primitive_c->set_has_bias(true); + prim->set_has_bias(true); } - primitive_c->set_activation_type(mindspore::ActivationType::NO_ACTIVATION); - - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffeInnerProductParser("InnerProduct", new CaffeInnerProductParser()); 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 8509ae060b..7c20ab97ca 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_interp_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_interp_parser.cc @@ -21,11 +21,10 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffeInterpParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::Resize(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Resize failed"; - return nullptr; - } + auto prim = std::make_unique(); + + prim->set_method(mindspore::ResizeMethod::LINEAR); + prim->set_coordinate_transform_mode(mindspore::CoordinateTransformMode::ALIGN_CORNERS); const caffe::InterpParameter &interpParam = proto.interp_param(); if (interpParam.has_height()) { @@ -34,7 +33,7 @@ ops::PrimitiveC *CaffeInterpParser::Parse(const caffe::LayerParameter &proto, co MS_LOG(ERROR) << "Interp height must be > 0"; return nullptr; } - primitive_c->set_new_height(height); + prim->set_new_height(height); } if (interpParam.has_width()) { @@ -43,12 +42,10 @@ ops::PrimitiveC *CaffeInterpParser::Parse(const caffe::LayerParameter &proto, co MS_LOG(ERROR) << "Interp width must be > 0"; return nullptr; } - primitive_c->set_new_width(width); + prim->set_new_width(width); } - primitive_c->set_method(mindspore::ResizeMethod::LINEAR); - primitive_c->set_coordinate_transform_mode(mindspore::CoordinateTransformMode::ALIGN_CORNERS); - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffeInterpParser("Interp", new CaffeInterpParser()); 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 09339c36b5..becbb4578b 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_model_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_model_parser.cc @@ -95,8 +95,8 @@ STATUS CaffeModelParser::ConvertLayers() { continue; } - auto primitive_c = node_parser->Parse(layer, weight); - if (primitive_c == nullptr) { + auto prim = node_parser->Parse(layer, weight); + if (prim == nullptr) { MS_LOG(ERROR) << "parse node " << layer.name() << " failed."; status = RET_ERROR; continue; @@ -119,7 +119,7 @@ STATUS CaffeModelParser::ConvertLayers() { } // build cnode - std::vector op_inputs = {NewValueNode(std::shared_ptr(primitive_c))}; + std::vector op_inputs = {NewValueNode(std::shared_ptr(prim))}; op_inputs.insert(op_inputs.end(), input_nodes.begin(), input_nodes.end()); op_inputs.insert(op_inputs.end(), const_parameters.begin(), const_parameters.end()); auto new_cnode = func_graph_ptr_->NewCNode(op_inputs); @@ -132,7 +132,7 @@ STATUS CaffeModelParser::ConvertLayers() { continue; } - status = ConvertLayerQuantParams(layer, weight, primitive_c); + status = ConvertLayerQuantParams(layer, weight, prim); if (status != RET_OK) { MS_LOG(ERROR) << "Convert quant params for " << layer.name() << " failed."; continue; @@ -294,9 +294,9 @@ STATUS CaffeModelParser::ConvertGraphOutputs() { } STATUS CaffeModelParser::ConvertLayerQuantParams(const caffe::LayerParameter &layer, - const caffe::LayerParameter &weight, ops::PrimitiveC *primitive_c) { - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "primitive_c is null, get quant params failed."; + const caffe::LayerParameter &weight, ops::PrimitiveC *prim) { + if (prim == nullptr) { + MS_LOG(ERROR) << "prim is null, get quant params failed."; return RET_NULL_PTR; } auto quant_params_holder = std::make_shared(); @@ -312,7 +312,7 @@ STATUS CaffeModelParser::ConvertLayerQuantParams(const caffe::LayerParameter &la std::vector notinited_quant_params(1); quant_params_holder->AddOutputQuantParam(notinited_quant_params); } - primitive_c->AddAttr("quant_params", quant_params_holder); + prim->AddAttr("quant_params", quant_params_holder); return RET_OK; } 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 2098e4f004..814cbee4d7 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_model_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_model_parser.h @@ -45,7 +45,7 @@ class CaffeModelParser : public ModelParser { STATUS ConvertLayers(); static STATUS ConvertLayerQuantParams(const caffe::LayerParameter &layer, const caffe::LayerParameter &weight, - ops::PrimitiveC *primitive_c); + ops::PrimitiveC *prim); STATUS ConvertBlobs(const caffe::LayerParameter &layer, std::vector *const_parameters); 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 8e0b1073a9..a88a769fc4 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_permute_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_permute_parser.cc @@ -21,11 +21,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffePermuteParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::Transpose(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Transpose failed"; - return nullptr; - } + auto prim = std::make_unique(); std::vector perm; const caffe::PermuteParameter &permuteParam = proto.permute_param(); @@ -34,9 +30,9 @@ ops::PrimitiveC *CaffePermuteParser::Parse(const caffe::LayerParameter &proto, c for (int i = 0; i < num_order_dims; ++i) { perm[i] = permuteParam.order()[i]; } - primitive_c->AddAttr("perm", MakeValue(perm)); + prim->AddAttr("perm", MakeValue(perm)); - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffePermuteParser("Permute", new CaffePermuteParser()); 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 6164d1bc02..ea4373bcc3 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_pooling_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_pooling_parser.cc @@ -124,31 +124,23 @@ ops::PrimitiveC *CaffePoolingParser::Parse(const caffe::LayerParameter &proto, c auto roundMode = ParseRoundMode(poolingParam); if (poolingParam.pool() == caffe::PoolingParameter::MAX) { - auto primitive_c = new (std::nothrow) ops::MaxPoolFusion(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new MaxPoolFusion failed"; - return nullptr; - } - primitive_c->set_format(mindspore::Format::NCHW); - primitive_c->set_pad_mode(mindspore::PadMode::PAD); - primitive_c->set_kernel_size(windows); - primitive_c->set_strides(strides); - primitive_c->set_pad(pad); - primitive_c->set_round_mode(roundMode); - return primitive_c; + auto prim = std::make_unique(); + prim->set_format(mindspore::Format::NCHW); + prim->set_pad_mode(mindspore::PadMode::PAD); + prim->set_kernel_size(windows); + prim->set_strides(strides); + prim->set_pad(pad); + prim->set_round_mode(roundMode); + return prim.release(); } else if (poolingParam.pool() == caffe::PoolingParameter::AVE) { - auto primitive_c = new (std::nothrow) ops::AvgPoolFusion(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new AvgPoolFusion failed"; - return nullptr; - } - primitive_c->set_format(mindspore::Format::NCHW); - primitive_c->set_pad_mode(mindspore::PadMode::PAD); - primitive_c->set_kernel_size(windows); - primitive_c->set_strides(strides); - primitive_c->set_pad(pad); - primitive_c->set_round_mode(roundMode); - return primitive_c; + auto prim = std::make_unique(); + prim->set_format(mindspore::Format::NCHW); + prim->set_pad_mode(mindspore::PadMode::PAD); + prim->set_kernel_size(windows); + prim->set_strides(strides); + prim->set_pad(pad); + prim->set_round_mode(roundMode); + return prim.release(); } else { MS_LOG(ERROR) << "poolingParam.pool() is not MAX or AVE"; return nullptr; 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 cf13397d3b..646d8d3f94 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_power_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_power_parser.cc @@ -21,11 +21,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffePowerParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::PowFusion(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new PowFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); const caffe::PowerParameter &powerParam = proto.power_param(); float power = 1.0; @@ -42,11 +38,11 @@ ops::PrimitiveC *CaffePowerParser::Parse(const caffe::LayerParameter &proto, con shift = powerParam.shift(); } } - primitive_c->AddAttr("power", MakeValue(power)); - primitive_c->set_scale(scale); - primitive_c->set_shift(shift); + prim->AddAttr("power", MakeValue(power)); + prim->set_scale(scale); + prim->set_shift(shift); - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffePowerParser("Power", new CaffePowerParser()); 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 fd525e676a..b6e0b387bd 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_prelu_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_prelu_parser.cc @@ -21,20 +21,16 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffePReluParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::PReLUFusion(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new PReLUFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); - const caffe::PReLUParameter &pReluParam = proto.prelu_param(); - if (pReluParam.has_channel_shared()) { - primitive_c->set_channel_shared(pReluParam.channel_shared()); + const caffe::PReLUParameter &prelu_param = proto.prelu_param(); + if (prelu_param.has_channel_shared()) { + prim->set_channel_shared(prelu_param.channel_shared()); } else { - primitive_c->set_channel_shared(false); + prim->set_channel_shared(false); } - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffePReluParser("PReLU", new CaffePReluParser()); diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_reduce_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_reduce_parser.cc index 681597b985..c8ed192d47 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_reduce_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_reduce_parser.cc @@ -22,30 +22,26 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffeReduceParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::ReduceFusion(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new ReduceFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_keep_dims(false); + prim->set_keep_dims(false); const caffe::ReductionParameter &reduce_param = proto.reduction_param(); if (reduce_param.has_operation()) { if (reduce_param.operation() == caffe::ReductionParameter_ReductionOp_MEAN) { - primitive_c->set_mode(mindspore::ReduceMode::Reduce_Mean); + prim->set_mode(mindspore::ReduceMode::Reduce_Mean); } else if (reduce_param.operation() == caffe::ReductionParameter_ReductionOp_SUM) { - primitive_c->set_mode(mindspore::ReduceMode::Reduce_Sum); + prim->set_mode(mindspore::ReduceMode::Reduce_Sum); } else if (reduce_param.operation() == caffe::ReductionParameter_ReductionOp_SUMSQ) { - primitive_c->set_mode(mindspore::ReduceMode::Reduce_Sum_Square); + prim->set_mode(mindspore::ReduceMode::Reduce_Sum_Square); } else if (reduce_param.operation() == caffe::ReductionParameter_ReductionOp_ASUM) { - primitive_c->set_mode(mindspore::ReduceMode::Reduce_ASum); + prim->set_mode(mindspore::ReduceMode::Reduce_ASum); } else { MS_LOG(ERROR) << "nsupported reduce mode: " << reduce_param.operation(); return nullptr; } } else { - primitive_c->set_mode(mindspore::ReduceMode::Reduce_Sum); + prim->set_mode(mindspore::ReduceMode::Reduce_Sum); } std::vector axes; @@ -56,9 +52,9 @@ ops::PrimitiveC *CaffeReduceParser::Parse(const caffe::LayerParameter &proto, co axes.push_back(1); axes.push_back(0); } - primitive_c->AddAttr("axes", MakeValue(axes)); + prim->AddAttr("axes", MakeValue(axes)); - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffeReduceParser("Reduction", new CaffeReduceParser()); 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 5f4d33753b..846824c92d 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_reshape_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_reshape_parser.cc @@ -21,11 +21,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffeReshapeParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::Reshape(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Reshape failed"; - return nullptr; - } + auto prim = std::make_unique(); const caffe::ReshapeParameter &reshapeParam = proto.reshape_param(); if (!reshapeParam.has_shape()) { @@ -37,9 +33,9 @@ ops::PrimitiveC *CaffeReshapeParser::Parse(const caffe::LayerParameter &proto, c for (int i = 0; i < blob_shape.dim_size(); i++) { shape.push_back(blob_shape.dim(i)); } - primitive_c->AddAttr("shape", MakeValue(shape)); + prim->AddAttr("shape", MakeValue(shape)); - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffeReshapeParser("Reshape", new CaffeReshapeParser()); 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 963ad48b57..48c4d3fa8c 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_scale_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_scale_parser.cc @@ -20,26 +20,8 @@ namespace mindspore { namespace lite { -STATUS CaffeScaleParser::GetAxisIndex(const int32_t &axis, uint32_t *axis_index) { - if (axis < -4 || axis >= 4) { - MS_LOG(ERROR) << "Scale axis value(" << axis << ") is not correct"; - return RET_ERROR; - } - - if (axis == -1) { - MS_LOG(WARNING) << "axis with -1 may lead to calculation errors when input less than 4 dims."; - } - - *axis_index = (axis + 4) % 4; - return RET_OK; -} - ops::PrimitiveC *CaffeScaleParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::ScaleFusion(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new ScaleFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); if (weight.blobs_size() + weight.bottom_size() < 2) { MS_LOG(ERROR) << "Scale bottom size:" << weight.bottom_size() << ", blobs size:" << weight.blobs_size() @@ -58,9 +40,9 @@ ops::PrimitiveC *CaffeScaleParser::Parse(const caffe::LayerParameter &proto, con MS_LOG(WARNING) << "axis with -1 may lead to calculation errors when input less than 4 dims."; } } - primitive_c->set_axis(1); + prim->set_axis(1); - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffeScaleParser("Scale", new CaffeScaleParser()); 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 24cda9f07d..29f525f420 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_scale_parser.h +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_scale_parser.h @@ -29,8 +29,6 @@ class CaffeScaleParser : public CaffeNodeParser { ~CaffeScaleParser() override = default; ops::PrimitiveC *Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) override; - - static STATUS GetAxisIndex(const int32_t &axis, uint32_t *axis_index); }; } // namespace lite } // namespace mindspore diff --git a/mindspore/lite/tools/converter/parser/caffe/caffe_slice_parser.cc b/mindspore/lite/tools/converter/parser/caffe/caffe_slice_parser.cc index 919db398d0..d7546c6d5f 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_slice_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_slice_parser.cc @@ -21,16 +21,12 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffeSliceParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::Split(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Split failed"; - return nullptr; - } + auto prim = std::make_unique(); const caffe::SliceParameter &slice_param = proto.slice_param(); - primitive_c->set_output_num(2); + prim->set_output_num(2); if (!slice_param.slice_point().empty()) { - primitive_c->set_output_num(slice_param.slice_point_size() + 1); + prim->set_output_num(slice_param.slice_point_size() + 1); std::vector size_splits; for (int i = 0; i < slice_param.slice_point_size(); ++i) { if (i == 0) { @@ -40,16 +36,16 @@ ops::PrimitiveC *CaffeSliceParser::Parse(const caffe::LayerParameter &proto, con } } size_splits.push_back(-1); - primitive_c->set_size_splits(size_splits); + prim->set_size_splits(size_splits); } if (slice_param.has_axis()) { - primitive_c->set_axis(slice_param.axis()); + prim->set_axis(slice_param.axis()); } else if (slice_param.has_slice_dim()) { - primitive_c->set_axis(slice_param.slice_dim()); + prim->set_axis(slice_param.slice_dim()); } - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffeSliceParser("Slice", new CaffeSliceParser()); 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 9f4cec0ca0..217c7bdbfd 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_softmax_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_softmax_parser.cc @@ -21,22 +21,18 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffeSoftmaxParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::Softmax(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Softmax failed"; - return nullptr; - } + auto prim = std::make_unique(); if (proto.has_softmax_param() && proto.softmax_param().has_axis()) { if (proto.softmax_param().axis() == -1) { MS_LOG(DEBUG) << "axis with -1 may lead to calculation errors when input less than 4 dims."; } - primitive_c->set_axis({proto.softmax_param().axis()}); + prim->set_axis({proto.softmax_param().axis()}); } else { - primitive_c->set_axis({1}); + prim->set_axis({1}); } - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffeSoftmaxParser("Softmax", new CaffeSoftmaxParser()); 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 034d67f4c6..81f8a9d6f9 100644 --- a/mindspore/lite/tools/converter/parser/caffe/caffe_tile_parser.cc +++ b/mindspore/lite/tools/converter/parser/caffe/caffe_tile_parser.cc @@ -22,11 +22,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *CaffeTileParser::Parse(const caffe::LayerParameter &proto, const caffe::LayerParameter &weight) { - auto primitive_c = new (std::nothrow) ops::TileFusion(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new TileFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); + const caffe::TileParameter &tile_param = proto.tile_param(); std::vector dims; dims.clear(); @@ -35,7 +32,7 @@ ops::PrimitiveC *CaffeTileParser::Parse(const caffe::LayerParameter &proto, cons } else { dims.push_back(1); } - primitive_c->set_dims(dims); + prim->set_dims(dims); std::vector multiples; multiples.clear(); @@ -44,9 +41,9 @@ ops::PrimitiveC *CaffeTileParser::Parse(const caffe::LayerParameter &proto, cons } else { multiples.push_back(1); } - primitive_c->AddAttr("multiples", MakeValue(multiples)); + prim->AddAttr("multiples", MakeValue(multiples)); - return primitive_c; + return prim.release(); } CaffeNodeRegistrar g_caffeTileParser("Tile", new CaffeTileParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_activation_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_activation_parser.cc index d6475eafdb..93a22ca5df 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_activation_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_activation_parser.cc @@ -25,42 +25,30 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxReluParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Activation; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new ReLU failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_activation_type(mindspore::ActivationType::RELU); + prim->set_activation_type(mindspore::ActivationType::RELU); - return primitive_c; + return prim.release(); } ops::PrimitiveC *OnnxLeakyReluParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Activation; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new LeakyRelu failed"; - return nullptr; - } + auto prim = std::make_unique(); for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "alpha") { - primitive_c->set_alpha(onnx_node_attr.f()); + prim->set_alpha(onnx_node_attr.f()); } } - primitive_c->set_activation_type(mindspore::ActivationType::LEAKY_RELU); + prim->set_activation_type(mindspore::ActivationType::LEAKY_RELU); - return primitive_c; + return prim.release(); } ops::PrimitiveC *OnnxPReluParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::PReLUFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new PReLU failed"; - return nullptr; - } + auto prim = std::make_unique(); std::vector params; const auto &input_name = onnx_node.input(1); @@ -82,10 +70,10 @@ ops::PrimitiveC *OnnxPReluParser::Parse(const onnx::GraphProto &onnx_graph, cons const auto slope_raw_data = reinterpret_cast(slope_data->raw_data().data()); const int64_t slope_size = slope_data->raw_data().size() / sizeof(float); std::vector slope; - bool channelShared = false; + bool channel_shared = false; if (slope_size == 1) { slope.push_back(*slope_raw_data); - channelShared = true; + channel_shared = true; } else { slope.resize(slope_size); if (memcpy_s(slope.data(), slope_size * sizeof(float), slope_raw_data, slope_size * sizeof(float)) != EOK) { @@ -93,54 +81,42 @@ ops::PrimitiveC *OnnxPReluParser::Parse(const onnx::GraphProto &onnx_graph, cons return nullptr; } } - primitive_c->set_slope(slope); - primitive_c->set_channel_shared(channelShared); + prim->set_slope(slope); + prim->set_channel_shared(channel_shared); } else { MS_LOG(WARNING) << "The slope pf prelu is null, which may cause errors."; } - return primitive_c; + return prim.release(); } ops::PrimitiveC *OnnxEluParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Elu; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Elu failed"; - return nullptr; - } + auto prim = std::make_unique(); for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "alpha") { - primitive_c->set_alpha(onnx_node_attr.f()); + prim->set_alpha(onnx_node_attr.f()); } } - return primitive_c; + return prim.release(); } ops::PrimitiveC *OnnxTanhParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Activation; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Tanh failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_activation_type(mindspore::ActivationType::TANH); + prim->set_activation_type(mindspore::ActivationType::TANH); - return primitive_c; + return prim.release(); } ops::PrimitiveC *OnnxSigmoidParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Activation; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Sigmoid failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_activation_type(mindspore::ActivationType::SIGMOID); + prim->set_activation_type(mindspore::ActivationType::SIGMOID); - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxReluParser("Relu", new OnnxReluParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_adder_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_adder_parser.cc index 6280c25a9b..79531537ef 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_adder_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_adder_parser.cc @@ -21,13 +21,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxAdderParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::AdderFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new AdderFusion failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } OnnxNodeRegistrar g_onnxAdderParser("adder_f", new OnnxAdderParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_argmax_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_argmax_parser.cc index 52fe82c0b6..fcc96f29b8 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_argmax_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_argmax_parser.cc @@ -21,22 +21,18 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxArgMaxParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::ArgMaxFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new ArgMax failed"; - return nullptr; - } + auto prim = std::make_unique(); for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "axis") { - primitive_c->set_axis(onnx_node_attr.i()); + prim->set_axis(onnx_node_attr.i()); } else if (attribute_name == "keepdims") { - primitive_c->set_keep_dims(static_cast(onnx_node_attr.i())); + prim->set_keep_dims(static_cast(onnx_node_attr.i())); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxArgMaxParser("ArgMax", new OnnxArgMaxParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_arithmetic_operation_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_arithmetic_operation_parser.cc index bf071d233a..5d189fe06c 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_arithmetic_operation_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_arithmetic_operation_parser.cc @@ -50,297 +50,160 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxAddParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::AddFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new AddFusion failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxSubParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::SubFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new SubFusion failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxDivParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::DivFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new DivFusion failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxMulParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::MulFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new MulFusion failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxEqualParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Equal; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Equal failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxLessParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Less; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Less failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxGreaterParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Greater; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Greater failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxFloorParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Floor; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Floor failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxAbsParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Abs; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Abs failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxExpParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::ExpFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new ExpFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_base(-1.0); - primitive_c->set_scale(1.0); - primitive_c->set_shift(0.0); + prim->set_base(-1.0); + prim->set_scale(1.0); + prim->set_shift(0.0); - return primitive_c; + return prim.release(); } ops::PrimitiveC *OnnxCosParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Cos; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Cos failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxCeilParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Ceil; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Ceil failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxLogParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Log; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Log failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxAtanParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Atan; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Atan failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxAsinParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Asin; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Asin failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxAndParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::LogicalAnd; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new LogicalAnd failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxOrParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::LogicalOr; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new LogicalOr failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxNotParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::LogicalNot; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new LogicalNot failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxNegParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Neg; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Neg failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxRoundParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Round; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Round failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxSinParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Sin; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new sin failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxTanParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Tan; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Tan failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxSqrtParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Sqrt; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Sqrt failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxPowParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::PowFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new PowFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_scale(1.0); - primitive_c->set_shift(0.0); + prim->set_scale(1.0); + prim->set_shift(0.0); - return primitive_c; + return prim.release(); } ops::PrimitiveC *OnnxMinParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Minimum; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Minimum failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxMaxParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Maximum; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Maximum failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *OnnxEltwiseParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Eltwise; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Eltwise failed"; - return nullptr; - } + auto prim = std::make_unique(); if (onnx_node.op_type() == "Sum") { - primitive_c->set_mode(mindspore::EltwiseMode::SUM); + prim->set_mode(mindspore::EltwiseMode::SUM); } else { MS_LOG(ERROR) << "unsupported Eltwise type"; return nullptr; } - return primitive_c; + return prim.release(); } ops::PrimitiveC *OnnxReciprocalParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Reciprocal; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Reciprocal failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } OnnxNodeRegistrar g_onnxAddParser("Add", new OnnxAddParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_batchnorm_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_batchnorm_parser.cc index e4ba8ff0ef..dc5d9ae50f 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_batchnorm_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_batchnorm_parser.cc @@ -21,21 +21,17 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxBatchNormParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::FusedBatchNorm; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new FusedBatchNorm failed"; - return nullptr; - } + auto prim = std::make_unique(); for (const auto &onnx_node_attr : onnx_node.attribute()) { if (onnx_node_attr.name() == "epsilon") { - primitive_c->set_epsilon(onnx_node_attr.f()); + prim->set_epsilon(onnx_node_attr.f()); } else if (onnx_node_attr.name() == "momentum") { - primitive_c->set_momentum(onnx_node_attr.f()); + prim->set_momentum(onnx_node_attr.f()); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxBatchNormParser("BatchNormalization", new OnnxBatchNormParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_biasadd_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_biasadd_parser.cc index 0c792ae1bf..2337522d72 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_biasadd_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_biasadd_parser.cc @@ -21,13 +21,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxBiasAddParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::BiasAdd; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new BiasAdd failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } OnnxNodeRegistrar g_onnxBiasAddParser("BiasAdd", new OnnxBiasAddParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_cast_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_cast_parser.cc index d740449dd7..a54dfc9273 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_cast_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_cast_parser.cc @@ -23,11 +23,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxCastParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Cast; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Cast failed"; - return nullptr; - } + auto prim = std::make_unique(); for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); @@ -36,11 +32,11 @@ ops::PrimitiveC *OnnxCastParser::Parse(const onnx::GraphProto &onnx_graph, const if (dst_type == kNumberTypeInt64) { dst_type = kNumberTypeInt32; } - primitive_c->AddAttr("to", MakeValue(static_cast(dst_type))); + prim->AddAttr("to", MakeValue(static_cast(dst_type))); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxCastParser("Cast", new OnnxCastParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_clip_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_clip_parser.cc index c468f50cd5..0cf2c5baa0 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_clip_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_clip_parser.cc @@ -21,24 +21,20 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxClipParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Clip; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Clip failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_min(-1); - primitive_c->set_max(-1); + prim->set_min(-1); + prim->set_max(-1); for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "max") { - primitive_c->set_max(onnx_node_attr.f()); + prim->set_max(onnx_node_attr.f()); } else if (attribute_name == "min") { - primitive_c->set_min(onnx_node_attr.f()); + prim->set_min(onnx_node_attr.f()); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxClipParser("Clip", new OnnxClipParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_concat_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_concat_parser.cc index 64f93c649e..8c51746057 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_concat_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_concat_parser.cc @@ -21,20 +21,16 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxConcatParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Concat; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Concat failed"; - return nullptr; - } + auto prim = std::make_unique(); for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "axis") { - primitive_c->set_axis(onnx_node_attr.i()); + prim->set_axis(onnx_node_attr.i()); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxConcatParser("Concat", new OnnxConcatParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_constant_of_shape_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_constant_of_shape_parser.cc index f582ece1e7..340518c13f 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_constant_of_shape_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_constant_of_shape_parser.cc @@ -24,11 +24,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxConstantOfShapeParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::ConstantOfShape; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new ConstantOfShape failed"; - return nullptr; - } + auto prim = std::make_unique(); int data_type = 0; std::vector values; @@ -61,10 +57,10 @@ ops::PrimitiveC *OnnxConstantOfShapeParser::Parse(const onnx::GraphProto &onnx_g if (values.empty()) { values = {0}; } - primitive_c->set_value(values); - primitive_c->set_data_type((int64_t)data_type); + prim->set_value(values); + prim->set_data_type((int64_t)data_type); - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxConstantOfShapeParser("ConstantOfShape", new OnnxConstantOfShapeParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_constant_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_constant_parser.cc index 5ee5fab618..253570c78e 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_constant_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_constant_parser.cc @@ -24,7 +24,7 @@ namespace mindspore { namespace lite { -STATUS OnnxConstantParser::AddDataInfoAttr(const onnx::TensorProto &onnx_const_tensor, ops::PrimitiveC *primitive_c) { +STATUS OnnxConstantParser::AddDataInfoAttr(const onnx::TensorProto &onnx_const_tensor, ops::PrimitiveC *prim) { ParamValueLitePtr param_value = std::make_shared(); if (param_value == nullptr) { MS_LOG(ERROR) << "new a paramValueLite failed."; @@ -48,16 +48,12 @@ STATUS OnnxConstantParser::AddDataInfoAttr(const onnx::TensorProto &onnx_const_t MS_LOG(ERROR) << "get value failed."; return RET_ERROR; } - primitive_c->set_attr("const_data", param_value); + prim->set_attr("const_data", param_value); return RET_OK; } ops::PrimitiveC *OnnxConstantParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Constant; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Constant failed"; - return nullptr; - } + auto prim = std::make_unique(); for (const auto &attr : onnx_node.attribute()) { if (attr.name() == "sparse_value") { @@ -66,18 +62,16 @@ ops::PrimitiveC *OnnxConstantParser::Parse(const onnx::GraphProto &onnx_graph, c } if (attr.name() == "value") { const auto &const_tensor = attr.t(); - if (AddDataInfoAttr(const_tensor, primitive_c) != RET_OK) { + if (AddDataInfoAttr(const_tensor, prim.get()) != RET_OK) { MS_LOG(ERROR) << "add basic attr failed."; - delete primitive_c; return nullptr; } } else { MS_LOG(ERROR) << "processing Constant op attr " << attr.name() << " not implemented"; - delete primitive_c; return nullptr; } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxConstantParser("Constant", new OnnxConstantParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_constant_parser.h b/mindspore/lite/tools/converter/parser/onnx/onnx_constant_parser.h index c794c492ef..6147e16392 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_constant_parser.h +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_constant_parser.h @@ -29,7 +29,7 @@ class OnnxConstantParser : public OnnxNodeParser { ops::PrimitiveC *Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) override; - STATUS AddDataInfoAttr(const onnx::TensorProto &onnx_const_tensor, ops::PrimitiveC *primitive_c); + STATUS AddDataInfoAttr(const onnx::TensorProto &onnx_const_tensor, ops::PrimitiveC *prim); }; } // namespace lite } // namespace mindspore diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_conv_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_conv_parser.cc index f9603bbeb8..9ba79bc31f 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_conv_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_conv_parser.cc @@ -20,22 +20,17 @@ #include #include #include "ops/fusion/conv2d_fusion.h" -#include "ops/fusion/depthwise_conv2d_fusion.h" namespace mindspore::lite { ops::PrimitiveC *OnnxConvParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Conv2DFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Conv2DFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_pad({0, 0, 0, 0}); + prim->set_pad({0, 0, 0, 0}); mindspore::Format format = mindspore::Format::NCHW; - mindspore::PadMode padMode = mindspore::PadMode::PAD; + mindspore::PadMode pad_mode = mindspore::PadMode::PAD; - int64_t channelOut = 1; - int64_t channelIn = 1; + int64_t channel_out = 1; + int64_t channel_in = 1; int64_t group = 1; std::vector kernels; std::vector strides; @@ -59,7 +54,7 @@ ops::PrimitiveC *OnnxConvParser::Parse(const onnx::GraphProto &onnx_graph, const } kernels.push_back(onnx_node_attr.ints(0)); kernels.push_back(onnx_node_attr.ints(1)); - primitive_c->set_kernel_size(kernels); + prim->set_kernel_size(kernels); } else if (onnx_node_attr.name() == "kernel_shape") { if (onnx_node_attr.ints().size() != 2) { MS_LOG(ERROR) << "kernel_shape size " << onnx_node_attr.ints().size() << " is not 2"; @@ -67,14 +62,14 @@ ops::PrimitiveC *OnnxConvParser::Parse(const onnx::GraphProto &onnx_graph, const } kernels.push_back(onnx_node_attr.ints(0)); kernels.push_back(onnx_node_attr.ints(1)); - primitive_c->set_kernel_size(kernels); + prim->set_kernel_size(kernels); } else if (onnx_node_attr.name() == "auto_pad") { if (onnx_node_attr.s() == "SAME_UPPER") { - padMode = mindspore::PadMode::SAME; + pad_mode = mindspore::PadMode::SAME; } else if (onnx_node_attr.s() == "VALID") { - padMode = mindspore::PadMode::VALID; + pad_mode = mindspore::PadMode::VALID; } else if (onnx_node_attr.s() == "NOTSET") { - padMode = mindspore::PadMode::PAD; + pad_mode = mindspore::PadMode::PAD; } else if (onnx_node_attr.s() == "SAME_LOWER") { MS_LOG(ERROR) << "unsupported padMode"; return nullptr; @@ -88,7 +83,7 @@ ops::PrimitiveC *OnnxConvParser::Parse(const onnx::GraphProto &onnx_graph, const pads.push_back(onnx_node_attr.ints(2)); pads.push_back(onnx_node_attr.ints(1)); pads.push_back(onnx_node_attr.ints(3)); - primitive_c->set_pad_list(pads); + prim->set_pad_list(pads); } else if (onnx_node_attr.name() == "strides") { if (onnx_node_attr.ints().size() != 2) { MS_LOG(ERROR) << "strides size " << onnx_node_attr.ints().size() << " is not 2"; @@ -96,7 +91,7 @@ ops::PrimitiveC *OnnxConvParser::Parse(const onnx::GraphProto &onnx_graph, const } strides.push_back(onnx_node_attr.ints(0)); strides.push_back(onnx_node_attr.ints(1)); - primitive_c->set_stride(strides); + prim->set_stride(strides); } else if (onnx_node_attr.name() == "order") { if (onnx_node_attr.s() == "NHWC") { format = mindspore::Format::NHWC; @@ -109,18 +104,18 @@ ops::PrimitiveC *OnnxConvParser::Parse(const onnx::GraphProto &onnx_graph, const if (dilation.empty()) { dilation = {1, 1}; } - primitive_c->set_dilation(dilation); + prim->set_dilation(dilation); if (pads.empty()) { pads = {0, 0, 0, 0}; } - primitive_c->set_pad_list(pads); + prim->set_pad_list(pads); - primitive_c->set_format(format); - primitive_c->set_pad_mode(padMode); - primitive_c->set_group(group); + prim->set_format(format); + prim->set_pad_mode(pad_mode); + prim->set_group(group); - // get channelOut and channelIn + // get channel_out and channel_in const auto &onnx_conv_weight = onnx_node.input(1); if (onnx_node.op_type() == "Conv") { auto node_iter = @@ -135,8 +130,8 @@ ops::PrimitiveC *OnnxConvParser::Parse(const onnx::GraphProto &onnx_graph, const for (int i = 0; i < size; ++i) { weight_shape.emplace_back((*node_iter).dims(i)); } - channelOut = weight_shape[0]; - channelIn = weight_shape[1] * group; + channel_out = weight_shape[0]; + channel_in = weight_shape[1] * group; } } else { auto node_iter = @@ -156,23 +151,24 @@ ops::PrimitiveC *OnnxConvParser::Parse(const onnx::GraphProto &onnx_graph, const } dims.insert(dims.begin(), iter->ints().begin(), iter->ints().end()); } - channelOut = dims.at(0); - channelIn = dims.at(3) * group; + channel_out = dims.at(0); + channel_in = dims.at(3) * group; } - primitive_c->set_in_channel(channelIn); - primitive_c->set_out_channel(channelOut); + prim->set_in_channel(channel_in); + prim->set_out_channel(channel_out); // parse activationType if (onnx_node.op_type() == "ConvRelu" || onnx_node.op_type() == "Int8ConvRelu") { - primitive_c->set_activation_type(mindspore::ActivationType::RELU); + prim->set_activation_type(mindspore::ActivationType::RELU); } else { - primitive_c->set_activation_type(mindspore::ActivationType::NO_ACTIVATION); + prim->set_activation_type(mindspore::ActivationType::NO_ACTIVATION); } - if (group == channelIn && channelIn == channelOut) { - primitive_c->AddAttr(ops::kIsDepthWise, MakeValue(true)); + + if (group == channel_in && channel_in == channel_out) { + prim->AddAttr(ops::kIsDepthWise, MakeValue(true)); } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxConvParser("Conv", new OnnxConvParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_conv_transpose_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_conv_transpose_parser.cc index 9ca1f50090..832f1f733a 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_conv_transpose_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_conv_transpose_parser.cc @@ -23,15 +23,12 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxDeConvParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Conv2dTransposeFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Conv2dTransposeFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_pad({0, 0, 0, 0}); + prim->set_pad({0, 0, 0, 0}); mindspore::Format format = mindspore::Format::NCHW; - mindspore::PadMode padMode = mindspore::PadMode::PAD; + mindspore::PadMode pad_mode = mindspore::PadMode::PAD; + int64_t group = 1; std::vector kernel; std::vector dilate; @@ -47,7 +44,7 @@ ops::PrimitiveC *OnnxDeConvParser::Parse(const onnx::GraphProto &onnx_graph, con } dilate.push_back(onnx_node_attr.ints(0)); dilate.push_back(onnx_node_attr.ints(1)); - primitive_c->set_dilation(dilate); + prim->set_dilation(dilate); } else if (onnx_node_attr.name() == "kernels") { if (onnx_node_attr.ints().size() != 2) { MS_LOG(ERROR) << "kernel_shape size " << onnx_node_attr.ints().size() << " is not 2"; @@ -55,7 +52,7 @@ ops::PrimitiveC *OnnxDeConvParser::Parse(const onnx::GraphProto &onnx_graph, con } kernel.push_back(onnx_node_attr.ints(0)); kernel.push_back(onnx_node_attr.ints(1)); - primitive_c->set_kernel_size(kernel); + prim->set_kernel_size(kernel); } else if (onnx_node_attr.name() == "kernel_shape") { if (onnx_node_attr.ints().size() != 2) { MS_LOG(ERROR) << "kernel_shape size " << onnx_node_attr.ints().size() << " is not 2"; @@ -63,9 +60,9 @@ ops::PrimitiveC *OnnxDeConvParser::Parse(const onnx::GraphProto &onnx_graph, con } kernel.push_back(onnx_node_attr.ints(0)); kernel.push_back(onnx_node_attr.ints(1)); - primitive_c->set_kernel_size(kernel); + prim->set_kernel_size(kernel); } else if (onnx_node_attr.name() == "auto_pad") { - padMode = GetOnnxPadMode(onnx_node_attr); + pad_mode = GetOnnxPadMode(onnx_node_attr); } else if (onnx_node_attr.name() == "pads") { if (onnx_node_attr.ints().size() != 4) { MS_LOG(ERROR) << "pads size " << onnx_node_attr.ints().size() << " is not 4"; @@ -75,7 +72,7 @@ ops::PrimitiveC *OnnxDeConvParser::Parse(const onnx::GraphProto &onnx_graph, con pads.push_back(onnx_node_attr.ints(2)); pads.push_back(onnx_node_attr.ints(1)); pads.push_back(onnx_node_attr.ints(3)); - primitive_c->set_pad_list(pads); + prim->set_pad_list(pads); } else if (onnx_node_attr.name() == "strides") { if (onnx_node_attr.ints().size() != 2) { MS_LOG(ERROR) << "strides size " << onnx_node_attr.ints().size() << " is not 2"; @@ -83,7 +80,7 @@ ops::PrimitiveC *OnnxDeConvParser::Parse(const onnx::GraphProto &onnx_graph, con } stride.push_back(onnx_node_attr.ints(0)); stride.push_back(onnx_node_attr.ints(1)); - primitive_c->set_stride(stride); + prim->set_stride(stride); } else if (onnx_node_attr.name() == "order") { if (onnx_node_attr.s() == "NHWC") { format = mindspore::Format::NHWC; @@ -96,9 +93,9 @@ ops::PrimitiveC *OnnxDeConvParser::Parse(const onnx::GraphProto &onnx_graph, con return nullptr; } } - primitive_c->set_format(format); - primitive_c->set_group(group); - primitive_c->set_pad_mode(padMode); + prim->set_format(format); + prim->set_group(group); + prim->set_pad_mode(pad_mode); const auto &onnx_conv_weight = onnx_node.input(1); auto node_iter = @@ -118,12 +115,14 @@ ops::PrimitiveC *OnnxDeConvParser::Parse(const onnx::GraphProto &onnx_graph, con MS_LOG(ERROR) << "weight_shape.size() should be 4, but is " << weight_shape.size(); return nullptr; } - primitive_c->set_in_channel(weight_shape[0]); - primitive_c->set_out_channel(weight_shape[1] * group); + prim->set_in_channel(weight_shape[0]); + prim->set_out_channel(weight_shape[1] * group); + if (group != 1 && weight_shape[1] == 1) { - primitive_c->AddAttr(ops::kIsDepthWise, MakeValue(true)); + prim->AddAttr(ops::kIsDepthWise, MakeValue(true)); } - return primitive_c; + + return prim.release(); } OnnxNodeRegistrar g_onnxDeConvParser("ConvTranspose", new OnnxDeConvParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_depth_to_space_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_depth_to_space_parser.cc index 2a35ba8af6..b66d00c5e7 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_depth_to_space_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_depth_to_space_parser.cc @@ -21,20 +21,16 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxDepthToSpaceParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::DepthToSpace; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new DepthToSpace failed"; - return nullptr; - } + auto prim = std::make_unique(); for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "blocksize") { - primitive_c->set_block_size(onnx_node_attr.i()); + prim->set_block_size(onnx_node_attr.i()); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxDepthToSpaceParser("DepthToSpace", new OnnxDepthToSpaceParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_dropout_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_dropout_parser.cc index 195756c4a1..5e28f2c672 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_dropout_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_dropout_parser.cc @@ -21,20 +21,16 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxDropoutParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Dropout; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Dropout failed"; - return nullptr; - } + auto prim = std::make_unique(); for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "ratio") { - primitive_c->set_keep_prob(onnx_node_attr.f()); + prim->set_keep_prob(onnx_node_attr.f()); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxDropoutParser("Dropout", new OnnxDropoutParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_expand_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_expand_parser.cc index b069d11afd..53bb0065cc 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_expand_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_expand_parser.cc @@ -22,11 +22,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxExpandParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::BroadcastTo; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new BroadcastTo failed"; - return nullptr; - } + auto prim = std::make_unique(); std::vector dst_shape; const auto &onnx_expand_power = onnx_node.input(1); @@ -46,9 +42,9 @@ ops::PrimitiveC *OnnxExpandParser::Parse(const onnx::GraphProto &onnx_graph, con } } } - primitive_c->set_shape(dst_shape); + prim->set_shape(dst_shape); - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxExpandSpaceParser("Expand", new OnnxExpandParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_flatten_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_flatten_parser.cc index d59445f164..a8599c5ee6 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_flatten_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_flatten_parser.cc @@ -21,13 +21,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxFlattenParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Flatten; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Flatten failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } OnnxNodeRegistrar g_onnxFlattenParser("Flatten", new OnnxFlattenParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_gather_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_gather_parser.cc index 3bad5b3f36..81f7fd8f26 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_gather_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_gather_parser.cc @@ -21,11 +21,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxGatherParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Gather; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Gather failed"; - return nullptr; - } + auto prim = std::make_unique(); int32_t axis = 0; for (const auto &onnx_node_attr : onnx_node.attribute()) { @@ -34,9 +30,9 @@ ops::PrimitiveC *OnnxGatherParser::Parse(const onnx::GraphProto &onnx_graph, con axis = static_cast(onnx_node_attr.i()); } } - primitive_c->AddAttr("axis", MakeValue(axis)); + prim->AddAttr("axis", MakeValue(axis)); - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxGatherParser("Gather", new OnnxGatherParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_gemm_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_gemm_parser.cc index f43eb4eb3f..82e7e2b719 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_gemm_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_gemm_parser.cc @@ -22,11 +22,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxGemmParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::MakeTuple; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new MakeTuple failed"; - return nullptr; - } + auto prim = std::make_unique(); auto node_parser = OnnxNodeParserRegistry::GetInstance()->GetNodeParser("MatMul"); if (node_parser == nullptr) { @@ -34,7 +30,7 @@ ops::PrimitiveC *OnnxGemmParser::Parse(const onnx::GraphProto &onnx_graph, const return nullptr; } auto *matmul_primitive = node_parser->Parse(onnx_graph, onnx_node); - primitive_c->AddAttr("MatMul", std::shared_ptr(matmul_primitive)); + prim->AddAttr("MatMul", std::shared_ptr(matmul_primitive)); node_parser = OnnxNodeParserRegistry::GetInstance()->GetNodeParser("BiasAdd"); if (node_parser == nullptr) { @@ -42,9 +38,9 @@ ops::PrimitiveC *OnnxGemmParser::Parse(const onnx::GraphProto &onnx_graph, const return nullptr; } auto *bias_add_primitive = node_parser->Parse(onnx_graph, onnx_node); - primitive_c->AddAttr("BiasAdd", std::shared_ptr(bias_add_primitive)); + prim->AddAttr("BiasAdd", std::shared_ptr(bias_add_primitive)); - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxGemmParser("Gemm", new OnnxGemmParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_given_tensor_fill_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_given_tensor_fill_parser.cc index 68dc0b57f4..a172795242 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_given_tensor_fill_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_given_tensor_fill_parser.cc @@ -24,14 +24,10 @@ namespace mindspore { namespace lite { -STATUS OnnxGivenTensorFillParser::ParseInt8GivenIntTensorFill(const onnx::NodeProto &onnx_node, - ops::PrimitiveC *primitive_c, +STATUS OnnxGivenTensorFillParser::ParseInt8GivenIntTensorFill(const onnx::NodeProto &onnx_node, ops::PrimitiveC *prim, const std::vector &shape) { ParamValueLitePtr param_value = std::make_shared(); - if (param_value == nullptr) { - MS_LOG(ERROR) << "new a paramValueLite failed."; - return RET_ERROR; - } + int data_count = std::accumulate(shape.begin(), shape.end(), 1, std::multiplies()); auto iter = std::find_if(onnx_node.attribute().begin(), onnx_node.attribute().end(), [](const onnx::AttributeProto &attr) { return attr.name() == "values"; }); @@ -46,6 +42,7 @@ STATUS OnnxGivenTensorFillParser::ParseInt8GivenIntTensorFill(const onnx::NodePr } if (iter->ints().data() == nullptr) { MS_LOG(ERROR) << "origin ints data in onnx is nullptr"; + delete[] param_data; return RET_NULL_PTR; } if (memcpy_s(param_data, data_size, iter->ints().data(), data_size) != EOK) { @@ -57,18 +54,14 @@ STATUS OnnxGivenTensorFillParser::ParseInt8GivenIntTensorFill(const onnx::NodePr param_value->set_format(schema::Format_NUM_OF_FORMAT); param_value->set_tensor_type(kNumberTypeInt64); param_value->SetTensorData(param_data, data_size); - primitive_c->set_attr("const_data", param_value); + prim->set_attr("const_data", param_value); return RET_OK; } -STATUS OnnxGivenTensorFillParser::ParseInt8GivenTensorFill(const onnx::NodeProto &onnx_node, - ops::PrimitiveC *primitive_c, +STATUS OnnxGivenTensorFillParser::ParseInt8GivenTensorFill(const onnx::NodeProto &onnx_node, ops::PrimitiveC *prim, const std::vector &shape) { ParamValueLitePtr param_value = std::make_shared(); - if (param_value == nullptr) { - MS_LOG(ERROR) << "new a paramValueLite failed."; - return RET_ERROR; - } + int data_count = std::accumulate(shape.begin(), shape.end(), 1, std::multiplies()); auto iter = std::find_if(onnx_node.attribute().begin(), onnx_node.attribute().end(), [](const onnx::AttributeProto &attr) { return attr.name() == "values"; }); @@ -89,16 +82,12 @@ STATUS OnnxGivenTensorFillParser::ParseInt8GivenTensorFill(const onnx::NodeProto param_value->set_format(schema::Format_NUM_OF_FORMAT); param_value->set_tensor_type(kNumberTypeUInt8); param_value->SetTensorData(param_data, data_count); - primitive_c->set_attr("const_data", param_value); + prim->set_attr("const_data", param_value); return RET_OK; } ops::PrimitiveC *OnnxGivenTensorFillParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Constant; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Constant failed"; - return nullptr; - } + auto prim = std::make_unique(); std::vector shape_vector; auto iter = std::find_if(onnx_node.attribute().begin(), onnx_node.attribute().end(), @@ -110,18 +99,18 @@ ops::PrimitiveC *OnnxGivenTensorFillParser::Parse(const onnx::GraphProto &onnx_g std::transform(shape_vector.begin(), shape_vector.end(), std::back_inserter(shape), [](const int64_t &val) { return static_cast(val); }); if (onnx_node.op_type() == "Int8GivenIntTensorFill") { - if (ParseInt8GivenIntTensorFill(onnx_node, primitive_c, shape) != RET_OK) { + if (ParseInt8GivenIntTensorFill(onnx_node, prim.get(), shape) != RET_OK) { MS_LOG(ERROR) << "given tensor fill parse failed."; return nullptr; } } else if (onnx_node.op_type() == "Int8GivenTensorFill") { - if (ParseInt8GivenTensorFill(onnx_node, primitive_c, shape) != RET_OK) { + if (ParseInt8GivenTensorFill(onnx_node, prim.get(), shape) != RET_OK) { MS_LOG(ERROR) << "given tensor fill parse failed."; return nullptr; } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxInt8GivenIntTensorFillParser("Int8GivenIntTensorFill", new OnnxGivenTensorFillParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_given_tensor_fill_parser.h b/mindspore/lite/tools/converter/parser/onnx/onnx_given_tensor_fill_parser.h index 71b45ac5ba..5a77282ff7 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_given_tensor_fill_parser.h +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_given_tensor_fill_parser.h @@ -30,9 +30,9 @@ class OnnxGivenTensorFillParser : public OnnxNodeParser { ops::PrimitiveC *Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) override; - STATUS ParseInt8GivenIntTensorFill(const onnx::NodeProto &onnx_node, ops::PrimitiveC *primitive_c, + STATUS ParseInt8GivenIntTensorFill(const onnx::NodeProto &onnx_node, ops::PrimitiveC *prim, const std::vector &shape); - STATUS ParseInt8GivenTensorFill(const onnx::NodeProto &onnx_node, ops::PrimitiveC *primitive_c, + STATUS ParseInt8GivenTensorFill(const onnx::NodeProto &onnx_node, ops::PrimitiveC *prim, const std::vector &shape); }; } // namespace lite diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_identity_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_identity_parser.cc index 59d4aae278..310c1e7819 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_identity_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_identity_parser.cc @@ -21,14 +21,10 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxIdentityParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Identity; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Identity failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } + OnnxNodeRegistrar g_onnxIdentityParser("Identity", new OnnxIdentityParser()); } // namespace lite } // namespace mindspore diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_instance_norm_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_instance_norm_parser.cc index 679f6872ad..f03210be9d 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_instance_norm_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_instance_norm_parser.cc @@ -21,22 +21,18 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxInstanceNormParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::LayerNormFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new LayerNormFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_elementwise_affine(true); + prim->set_elementwise_affine(true); if (!onnx_node.attribute().empty()) { auto onnx_node_attr = onnx_node.attribute().at(0); if (onnx_node_attr.name() == "epsilon") { - primitive_c->set_epsilon(onnx_node_attr.f()); + prim->set_epsilon(onnx_node_attr.f()); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxInstanceNormParser("InstanceNormalization", new OnnxInstanceNormParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_lp_norm_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_lp_norm_parser.cc index edad06381a..12a2bdf2d0 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_lp_norm_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_lp_norm_parser.cc @@ -21,22 +21,18 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxLpNormParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::LpNormalization; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new LpNormalization failed"; - return nullptr; - } + auto prim = std::make_unique(); for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "axis") { - primitive_c->set_axis(onnx_node_attr.i()); + prim->set_axis(onnx_node_attr.i()); } else if (attribute_name == "p") { - primitive_c->set_p(onnx_node_attr.i()); + prim->set_p(onnx_node_attr.i()); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxLpNormParser("LpNormalization", new OnnxLpNormParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_lrn_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_lrn_parser.cc index 9d5e0d386d..6d29004c3c 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_lrn_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_lrn_parser.cc @@ -21,11 +21,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxLrnParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Lrn; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new LRN failed"; - return nullptr; - } + auto prim = std::make_unique(); int64_t size = 0; float alpha = 0; @@ -34,12 +30,12 @@ ops::PrimitiveC *OnnxLrnParser::Parse(const onnx::GraphProto &onnx_graph, const if (attribute_name == "alpha") { alpha = onnx_node_attr.f(); } else if (attribute_name == "beta") { - primitive_c->set_beta(onnx_node_attr.f()); + prim->set_beta(onnx_node_attr.f()); } else if (attribute_name == "bias") { - primitive_c->set_bias(onnx_node_attr.f()); + prim->set_bias(onnx_node_attr.f()); } else if (attribute_name == "size") { size = onnx_node_attr.i(); - primitive_c->set_depth_radius(size / 2); + prim->set_depth_radius(size / 2); } } @@ -48,9 +44,9 @@ ops::PrimitiveC *OnnxLrnParser::Parse(const onnx::GraphProto &onnx_graph, const return nullptr; } alpha /= size; - primitive_c->set_alpha(alpha); + prim->set_alpha(alpha); - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxLrnxParser("Lrn", new OnnxLrnParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_lstm_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_lstm_parser.cc index 7346aa2f9b..b90684448e 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_lstm_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_lstm_parser.cc @@ -21,32 +21,28 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxLstmParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::LSTM; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new LSTM failed"; - return nullptr; - } + auto prim = std::make_unique(); for (const auto &onnx_node_attr : onnx_node.attribute()) { if (onnx_node_attr.name() == "direction") { const auto &direction = onnx_node_attr.s(); bool bidirectional = direction == "bidirectional"; - primitive_c->set_bidirectional(bidirectional); + prim->set_bidirectional(bidirectional); if (bidirectional) { - primitive_c->set_num_directions(2); + prim->set_num_directions(2); } else { - primitive_c->set_num_directions(1); + prim->set_num_directions(1); } } else if (onnx_node_attr.name() == "hidden_size") { - primitive_c->set_hidden_size(onnx_node_attr.i()); + prim->set_hidden_size(onnx_node_attr.i()); } else if (onnx_node_attr.name() == "clip") { - primitive_c->set_dropout(onnx_node_attr.f()); + prim->set_dropout(onnx_node_attr.f()); } else if (onnx_node_attr.name() == "activations") { - primitive_c->set_has_bias(true); + prim->set_has_bias(true); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxLstmParser("LSTM", new OnnxLstmParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_matmul_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_matmul_parser.cc index 9d74f0c367..dbb798bf1a 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_matmul_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_matmul_parser.cc @@ -21,20 +21,16 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxMatmulParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::MatMul; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new MatMul failed"; - return nullptr; - } + auto prim = std::make_unique(); float alpha = 1.0f; float beta = 1.0f; for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "transA") { - primitive_c->set_transpose_a(static_cast(onnx_node_attr.i())); + prim->set_transpose_a(static_cast(onnx_node_attr.i())); } else if (attribute_name == "transB") { - primitive_c->set_transpose_b(static_cast(onnx_node_attr.i())); + prim->set_transpose_b(static_cast(onnx_node_attr.i())); } else if (attribute_name == "alpha") { alpha = onnx_node_attr.f(); } else if (attribute_name == "beta") { @@ -46,7 +42,7 @@ ops::PrimitiveC *OnnxMatmulParser::Parse(const onnx::GraphProto &onnx_graph, con return nullptr; } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxMatmulParser("MatMul", new OnnxMatmulParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_model_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_model_parser.cc index 8c53e31719..36b83cfeac 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_model_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_model_parser.cc @@ -48,10 +48,7 @@ FuncGraphPtr OnnxModelParser::Parse(const std::string &model_file, const std::st const QuantType &quant_type) { NoSupportOp::GetInstance()->SetFmkType("ONNX"); func_graph_ptr_ = std::make_shared(); - if (func_graph_ptr_ == nullptr) { - MS_LOG(ERROR) << "funcgraph is nullptr."; - return nullptr; - } + auto status = InitOriginModel(model_file); if (RET_OK != status) { ReturnCode::GetSingleReturnCode()->UpdateReturnCode(status); @@ -164,25 +161,24 @@ STATUS OnnxModelParser::ConvertNodes() { if (status != RET_OK) { continue; } - auto primitive_c = node_parser->Parse(onnx_graph_, onnx_node); + auto prim = node_parser->Parse(onnx_graph_, onnx_node); MS_LOG(INFO) << "parse op:" << onnx_node.op_type(); - if (primitive_c == nullptr) { + if (prim == nullptr) { MS_LOG(ERROR) << "parse node " << onnx_node.op_type() << " failed."; status = RET_ERROR; continue; } - status = ConvertOpQuantParams(onnx_node, primitive_c); - if (status != RET_OK) { + if (ConvertOpQuantParams(onnx_node, prim) != RET_OK) { MS_LOG(ERROR) << "convert " << onnx_node.op_type() << " quant param failed."; continue; } if (IsSpecialOnnxNode(onnx_node)) { - auto status_node = ConvertSpecialOnnxNode(onnx_node, primitive_c); + auto status_node = ConvertSpecialOnnxNode(onnx_node, prim); status = status == RET_OK ? status_node : status; continue; } // build CNode - status = BuildCNode(onnx_node, primitive_c); + status = BuildCNode(onnx_node, prim); if (status != RET_OK) { MS_LOG(ERROR) << "build cnode " << onnx_node.op_type() << " failed."; } @@ -195,10 +191,7 @@ STATUS OnnxModelParser::ConvertGraphOutputs() { if (onnx_graph_.output_size() > 1) { std::vector make_tuple_inputs; auto make_tuple_prim_ptr = std::make_shared(); - if (make_tuple_prim_ptr == nullptr) { - MS_LOG(ERROR) << "new return nullptr"; - return RET_NULL_PTR; - } + for (const auto &graph_out : onnx_graph_.output()) { if (nodes_.find(graph_out.name()) == nodes_.end()) { MS_LOG(ERROR) << "graph output get failed."; @@ -236,19 +229,15 @@ STATUS OnnxModelParser::ConvertGraphOutputs() { STATUS OnnxModelParser::BuildReturnNode(const std::vector &return_inputs) { auto returnPrim = std::make_shared(); - if (returnPrim == nullptr) { - MS_LOG(ERROR) << "new return nullptr"; - return RET_NULL_PTR; - } auto returnCnode = func_graph_ptr_->NewCNode(returnPrim, return_inputs); returnCnode->set_fullname_with_scope("return"); func_graph_ptr_->set_return(returnCnode); return RET_OK; } -STATUS OnnxModelParser::BuildCNode(const onnx::NodeProto &onnx_node, ops::PrimitiveC *primitive_c) { - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "primitive_c is nullptr."; +STATUS OnnxModelParser::BuildCNode(const onnx::NodeProto &onnx_node, ops::PrimitiveC *prim) { + if (prim == nullptr) { + MS_LOG(ERROR) << "prim is nullptr."; return RET_NULL_PTR; } std::vector op_inputs; @@ -263,7 +252,7 @@ STATUS OnnxModelParser::BuildCNode(const onnx::NodeProto &onnx_node, ops::Primit op_inputs.push_back(nodes_[input_name]); } } - auto new_cnode = func_graph_ptr_->NewCNode(std::shared_ptr(primitive_c), op_inputs); + auto new_cnode = func_graph_ptr_->NewCNode(std::shared_ptr(prim), op_inputs); new_cnode->set_fullname_with_scope(onnx_node.op_type() + "_" + onnx_node.output(0)); auto status = BuildOpOutputs(onnx_node, new_cnode); return status; @@ -287,10 +276,6 @@ STATUS OnnxModelParser::BuildOpOutputs(const onnx::NodeProto &onnx_node, const C auto type_ptr = TypeIdToType(kTypeUnknown); abstract_list.emplace_back(std::make_shared(type_ptr, shape_vector)); auto tuple_get_item_prim_ptr = std::make_shared(); - if (tuple_get_item_prim_ptr == nullptr) { - MS_LOG(ERROR) << "new return nullptr"; - return RET_NULL_PTR; - } auto tuple_get_item_prim = NewValueNode(tuple_get_item_prim_ptr); auto get_item_value = NewValueNode(MakeValue(op_idx)); std::vector inputs{tuple_get_item_prim, cnode, get_item_value}; @@ -304,9 +289,9 @@ STATUS OnnxModelParser::BuildOpOutputs(const onnx::NodeProto &onnx_node, const C return RET_OK; } -STATUS OnnxModelParser::ConvertOpQuantParams(const onnx::NodeProto &onnx_node, ops::PrimitiveC *primitive_c) { - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "primitive_c is null, get quant params failed."; +STATUS OnnxModelParser::ConvertOpQuantParams(const onnx::NodeProto &onnx_node, ops::PrimitiveC *prim) { + if (prim == nullptr) { + MS_LOG(ERROR) << "prim is null, get quant params failed."; return RET_NULL_PTR; } auto status = ParseQuantParam(onnx_node); @@ -337,7 +322,7 @@ STATUS OnnxModelParser::ConvertOpQuantParams(const onnx::NodeProto &onnx_node, o } quant_params_holder->AddOutputQuantParam(quant_params); } - primitive_c->AddAttr("quant_params", quant_params_holder); + prim->AddAttr("quant_params", quant_params_holder); return RET_OK; } @@ -462,8 +447,8 @@ STATUS OnnxModelParser::CopyTensorQuantParam(const std::string &tensor_name, Qua return RET_OK; } -STATUS OnnxModelParser::ConvertSpecialOnnxNode(const onnx::NodeProto &onnx_node, ops::PrimitiveC *primitive_c) { - if (primitive_c == nullptr) { +STATUS OnnxModelParser::ConvertSpecialOnnxNode(const onnx::NodeProto &onnx_node, ops::PrimitiveC *prim) { + if (prim == nullptr) { MS_LOG(ERROR) << "imitive_c is nullptr."; return RET_NULL_PTR; } @@ -472,30 +457,30 @@ STATUS OnnxModelParser::ConvertSpecialOnnxNode(const onnx::NodeProto &onnx_node, MS_LOG(ERROR) << "loop hasn't supported."; return RET_NOT_FIND_OP; } else if (onnx_node.op_type() == "Gemm") { - status = ConvertOnnxGemmNode(onnx_node, primitive_c); + status = ConvertOnnxGemmNode(onnx_node, prim); } else { MS_LOG(ERROR) << "the node is not special node."; status = RET_ERROR; } - delete primitive_c; + delete prim; return status; } -STATUS OnnxModelParser::ConvertOnnxGemmNode(const onnx::NodeProto &onnx_node, ops::PrimitiveC *primitive_c) { +STATUS OnnxModelParser::ConvertOnnxGemmNode(const onnx::NodeProto &onnx_node, ops::PrimitiveC *prim) { if (onnx_node.op_type() != "Gemm") { MS_LOG(ERROR) << "this op is not gemm, it is " << onnx_node.op_type(); return RET_ERROR; } - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "primitive_c is nullptr."; + if (prim == nullptr) { + MS_LOG(ERROR) << "prim is nullptr."; return RET_NULL_PTR; } - auto status = BuildCNodeForGemm(onnx_node, primitive_c, "MatMul"); + auto status = BuildCNodeForGemm(onnx_node, prim, "MatMul"); if (status != RET_OK) { MS_LOG(ERROR) << "convert gemm node failed."; return status; } - status = BuildCNodeForGemm(onnx_node, primitive_c, "BiasAdd"); + status = BuildCNodeForGemm(onnx_node, prim, "BiasAdd"); if (status != RET_OK) { MS_LOG(ERROR) << "convert gemm node failed."; return status; @@ -503,14 +488,14 @@ STATUS OnnxModelParser::ConvertOnnxGemmNode(const onnx::NodeProto &onnx_node, op return RET_OK; } -STATUS OnnxModelParser::BuildCNodeForGemm(const onnx::NodeProto &onnx_node, ops::PrimitiveC *primitive_c, +STATUS OnnxModelParser::BuildCNodeForGemm(const onnx::NodeProto &onnx_node, ops::PrimitiveC *prim, const std::string &name) { - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "primitive_c is nullptr."; + if (prim == nullptr) { + MS_LOG(ERROR) << "prim is nullptr."; return RET_NULL_PTR; } - auto value = primitive_c->GetAttr(name); - primitive_c->EraseAttr(name); + auto value = prim->GetAttr(name); + prim->EraseAttr(name); if (value == nullptr) { MS_LOG(ERROR) << "op parse failed."; return RET_NULL_PTR; @@ -524,7 +509,7 @@ STATUS OnnxModelParser::BuildCNodeForGemm(const onnx::NodeProto &onnx_node, ops: std::vector shape_vector; std::vector op_inputs; auto quant_params_holder = std::make_shared(); - auto quant_params_holder_origin = primitive_c->GetAttr("quant_params")->cast(); + auto quant_params_holder_origin = prim->GetAttr("quant_params")->cast(); if (name == "MatMul") { for (int i = 0; i < 2; ++i) { if (nodes_.find(onnx_node.input(i)) == nodes_.end()) { diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_model_parser.h b/mindspore/lite/tools/converter/parser/onnx/onnx_model_parser.h index c3eecaa934..cd03a231ad 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_model_parser.h +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_model_parser.h @@ -55,12 +55,12 @@ class OnnxModelParser : public ModelParser { STATUS BuildReturnNode(const std::vector &return_inputs); STATUS BuildParameterNode(const ParameterPtr ¶meter_node, const onnx::TensorProto &tensor); STATUS BuildParameterNodeForQuantParam(void *data, const std::string &name, TypeId type); - STATUS BuildCNode(const onnx::NodeProto &onnx_node, ops::PrimitiveC *primitive_c); + STATUS BuildCNode(const onnx::NodeProto &onnx_node, ops::PrimitiveC *prim); STATUS BuildOpOutputs(const onnx::NodeProto &onnx_node, const CNodePtr &cnode); - STATUS ConvertSpecialOnnxNode(const onnx::NodeProto &onnx_node, ops::PrimitiveC *primitive_c); - STATUS ConvertOnnxGemmNode(const onnx::NodeProto &onnx_node, ops::PrimitiveC *primitive_c); - STATUS BuildCNodeForGemm(const onnx::NodeProto &onnx_node, ops::PrimitiveC *primitive_c, const std::string &name); - STATUS ConvertOpQuantParams(const onnx::NodeProto &onnx_node, ops::PrimitiveC *primitive_c); + STATUS ConvertSpecialOnnxNode(const onnx::NodeProto &onnx_node, ops::PrimitiveC *prim); + STATUS ConvertOnnxGemmNode(const onnx::NodeProto &onnx_node, ops::PrimitiveC *prim); + STATUS BuildCNodeForGemm(const onnx::NodeProto &onnx_node, ops::PrimitiveC *prim, const std::string &name); + STATUS ConvertOpQuantParams(const onnx::NodeProto &onnx_node, ops::PrimitiveC *prim); STATUS ParseQuantParam(const onnx::NodeProto &onnx_node); STATUS SetTensorQuantParam(const std::string &tensor_name, std::vector *quant_params); STATUS SetTensorQuantParamFromNode(const std::string &tensor_name, std::vector *quant_params); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_non_max_suppression_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_non_max_suppression_parser.cc index 9e04564a6a..b87e3382e8 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_non_max_suppression_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_non_max_suppression_parser.cc @@ -22,22 +22,18 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxNonMaxSuppressionParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::NonMaxSuppression; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new NonMaxSuppression failed"; - return nullptr; - } + auto prim = std::make_unique(); for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "center_point_box") { if (onnx_node_attr.has_i()) { - primitive_c->set_center_point_box(onnx_node_attr.i()); + prim->set_center_point_box(onnx_node_attr.i()); } } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxNonMaxSuppressionParser("NonMaxSuppression", new OnnxNonMaxSuppressionParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_onehot_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_onehot_parser.cc index b2eccb0b4f..6b40cf820d 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_onehot_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_onehot_parser.cc @@ -21,20 +21,16 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxOneHotParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::OneHot; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new OneHot failed"; - return nullptr; - } + auto prim = std::make_unique(); for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "axis") { - primitive_c->set_axis(onnx_node_attr.i()); + prim->set_axis(onnx_node_attr.i()); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxOneHotParser("OneHot", new OnnxOneHotParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_pad_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_pad_parser.cc index 4a45c53500..59ce239a55 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_pad_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_pad_parser.cc @@ -22,13 +22,9 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxPadParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::PadFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new PadFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); - mindspore::PaddingMode paddingMode; + mindspore::PaddingMode padding_mode; for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "pads") { @@ -40,28 +36,28 @@ ops::PrimitiveC *OnnxPadParser::Parse(const onnx::GraphProto &onnx_graph, const paddings[i][0] = static_cast(onnx_node_attr.ints(i)); paddings[i][1] = static_cast(onnx_node_attr.ints(i + size / 2)); } - primitive_c->set_paddings(paddings); + prim->set_paddings(paddings); std::vector> pads(size / 2, std::vector(2, 0)); for (int i = 0; i < size / 2; i++) { pads[i][0] = static_cast(onnx_node_attr.ints(i)); pads[i][1] = static_cast(onnx_node_attr.ints(i + size / 2)); } - primitive_c->AddAttr("pads", MakeValue(pads)); + prim->AddAttr("pads", MakeValue(pads)); } else if (attribute_name == "mode") { const auto &mode = onnx_node_attr.s(); if (mode == "constant") { - paddingMode = mindspore::PaddingMode::CONSTANT; + padding_mode = mindspore::PaddingMode::CONSTANT; } else if (mode == "reflect") { - paddingMode = mindspore::PaddingMode::REFLECT; + padding_mode = mindspore::PaddingMode::REFLECT; } else if (mode == "edge") { - paddingMode = mindspore::PaddingMode::SYMMETRIC; + padding_mode = mindspore::PaddingMode::SYMMETRIC; } - primitive_c->set_padding_mode(paddingMode); + prim->set_padding_mode(padding_mode); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxPadParser("Pad", new OnnxPadParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_pool_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_pool_parser.cc index a36aa3e67e..4906179ba9 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_pool_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_pool_parser.cc @@ -23,14 +23,10 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxAvgPoolParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::AvgPoolFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new AvgPoolFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_format(mindspore::Format::NCHW); - primitive_c->set_pad_mode(mindspore::PadMode::PAD); + prim->set_format(mindspore::Format::NCHW); + prim->set_pad_mode(mindspore::PadMode::PAD); mindspore::RoundMode roundMode = mindspore::RoundMode::FLOOR; std::vector kernels; std::vector strides; @@ -41,7 +37,7 @@ ops::PrimitiveC *OnnxAvgPoolParser::Parse(const onnx::GraphProto &onnx_graph, co if (onnx_node_attr.ints_size() == 2) { kernels.push_back(onnx_node_attr.ints(0)); kernels.push_back(onnx_node_attr.ints(1)); - primitive_c->set_kernel_size(kernels); + prim->set_kernel_size(kernels); } } if (attribute_name == "strides") { @@ -52,7 +48,7 @@ ops::PrimitiveC *OnnxAvgPoolParser::Parse(const onnx::GraphProto &onnx_graph, co } if (attribute_name == "auto_pad") { if (onnx_node_attr.s() == "SAME_UPPER") { - primitive_c->set_pad_mode(mindspore::PadMode::SAME); + prim->set_pad_mode(mindspore::PadMode::SAME); } else if (onnx_node_attr.s() == "SAME_LOWER") { MS_LOG(ERROR) << "PadMode_SAME_LOWER is not supported now"; return nullptr; @@ -78,34 +74,30 @@ ops::PrimitiveC *OnnxAvgPoolParser::Parse(const onnx::GraphProto &onnx_graph, co return nullptr; } } - primitive_c->set_round_mode(roundMode); + prim->set_round_mode(roundMode); if (strides.empty()) { strides.push_back(1); strides.push_back(1); } - primitive_c->set_strides(strides); + prim->set_strides(strides); if (pads.empty()) { pads = {0, 0, 0, 0}; } - primitive_c->set_pad(pads); + prim->set_pad(pads); if (onnx_node.op_type() == "GlobalAveragePool") { - primitive_c->set_global(true); + prim->set_global(true); } else { - primitive_c->set_global(false); + prim->set_global(false); } - return primitive_c; + return prim.release(); } ops::PrimitiveC *OnnxMaxPoolParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::MaxPoolFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new MaxPoolFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_format(mindspore::Format::NCHW); + prim->set_format(mindspore::Format::NCHW); mindspore::RoundMode roundMode = mindspore::RoundMode::FLOOR; std::vector kernels; std::vector strides; @@ -116,7 +108,7 @@ ops::PrimitiveC *OnnxMaxPoolParser::Parse(const onnx::GraphProto &onnx_graph, co if (onnx_node_attr.ints_size() == 2) { kernels.push_back(onnx_node_attr.ints(0)); kernels.push_back(onnx_node_attr.ints(1)); - primitive_c->set_kernel_size(kernels); + prim->set_kernel_size(kernels); } } if (attribute_name == "strides") { @@ -127,7 +119,7 @@ ops::PrimitiveC *OnnxMaxPoolParser::Parse(const onnx::GraphProto &onnx_graph, co } if (attribute_name == "auto_pad") { if (onnx_node_attr.s() == "SAME_UPPER") { - primitive_c->set_pad_mode(mindspore::PadMode::SAME); + prim->set_pad_mode(mindspore::PadMode::SAME); } else if (onnx_node_attr.s() == "SAME_LOWER") { MS_LOG(ERROR) << "PadMode_SAME_LOWER is not supported now"; return nullptr; @@ -135,7 +127,7 @@ ops::PrimitiveC *OnnxMaxPoolParser::Parse(const onnx::GraphProto &onnx_graph, co } if (attribute_name == "pads") { if (onnx_node_attr.ints_size() == 4) { - primitive_c->set_pad_mode(mindspore::PadMode::PAD); + prim->set_pad_mode(mindspore::PadMode::PAD); pads.push_back(onnx_node_attr.ints(0)); pads.push_back(onnx_node_attr.ints(2)); pads.push_back(onnx_node_attr.ints(1)); @@ -154,22 +146,22 @@ ops::PrimitiveC *OnnxMaxPoolParser::Parse(const onnx::GraphProto &onnx_graph, co return nullptr; } } - primitive_c->set_round_mode(roundMode); + prim->set_round_mode(roundMode); if (pads.empty()) { pads = {0, 0, 0, 0}; } - primitive_c->set_pad(pads); + prim->set_pad(pads); if (strides.empty()) { strides.push_back(1); strides.push_back(1); } - primitive_c->set_strides(strides); + prim->set_strides(strides); - primitive_c->set_global(onnx_node.op_type() == "GlobalMaxPool"); + prim->set_global(onnx_node.op_type() == "GlobalMaxPool"); - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxAveragePoolParser("AveragePool", new OnnxAvgPoolParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_quantize_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_quantize_parser.cc index 6e861b2446..5c00c3512d 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_quantize_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_quantize_parser.cc @@ -21,24 +21,20 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxQuantizeParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::QuantDTypeCast; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new QuantDTypeCast failed"; - return nullptr; - } + auto prim = std::make_unique(); if (onnx_node.op_type() == "Int8Quantize") { - primitive_c->set_src_t(kNumberTypeFloat32); - primitive_c->set_dst_t(kNumberTypeUInt8); + prim->set_src_t(kNumberTypeFloat32); + prim->set_dst_t(kNumberTypeUInt8); } else if (onnx_node.op_type() == "Int8Dequantize") { - primitive_c->set_src_t(kNumberTypeUInt8); - primitive_c->set_dst_t(kNumberTypeFloat32); + prim->set_src_t(kNumberTypeUInt8); + prim->set_dst_t(kNumberTypeFloat32); } else { MS_LOG(ERROR) << "Unsupported nodeType: " << onnx_node.op_type().c_str(); return nullptr; } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxInt8QuantizeParser("Int8Quantize", new OnnxQuantizeParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_range_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_range_parser.cc index d86d96c5ee..9d30a348ce 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_range_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_range_parser.cc @@ -21,15 +21,11 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxRangeParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Range; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Range failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_d_type(0); + prim->set_d_type(0); - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxRangeParser("Range", new OnnxRangeParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_reduce_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_reduce_parser.cc index ed744b3f55..f5019e36aa 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_reduce_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_reduce_parser.cc @@ -22,13 +22,9 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxReduceParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::ReduceFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new ReduceFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_keep_dims(true); + prim->set_keep_dims(true); for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "axes") { @@ -37,30 +33,30 @@ ops::PrimitiveC *OnnxReduceParser::Parse(const onnx::GraphProto &onnx_graph, con for (int i = 0; i < size; ++i) { axes.push_back(onnx_node_attr.ints(i)); } - primitive_c->AddAttr("axes", MakeValue(axes)); + prim->AddAttr("axes", MakeValue(axes)); } else if (attribute_name == "keepdims") { - primitive_c->set_keep_dims(static_cast(onnx_node_attr.i())); + prim->set_keep_dims(static_cast(onnx_node_attr.i())); } } const auto &type = onnx_node.op_type(); if (type == "ReduceMean") { - primitive_c->set_mode(mindspore::ReduceMode::Reduce_Mean); + prim->set_mode(mindspore::ReduceMode::Reduce_Mean); } else if (type == "ReduceMax") { - primitive_c->set_mode(mindspore::ReduceMode::Reduce_Max); + prim->set_mode(mindspore::ReduceMode::Reduce_Max); } else if (type == "ReduceMin") { - primitive_c->set_mode(mindspore::ReduceMode::Reduce_Min); + prim->set_mode(mindspore::ReduceMode::Reduce_Min); } else if (type == "ReduceSum") { - primitive_c->set_mode(mindspore::ReduceMode::Reduce_Sum); + prim->set_mode(mindspore::ReduceMode::Reduce_Sum); } else if (type == "ReduceProd") { - primitive_c->set_mode(mindspore::ReduceMode::Reduce_Prod); + prim->set_mode(mindspore::ReduceMode::Reduce_Prod); } else if (type == "ReduceSumSquare") { - primitive_c->set_mode(mindspore::ReduceMode::Reduce_Sum_Square); + prim->set_mode(mindspore::ReduceMode::Reduce_Sum_Square); } else { MS_LOG(ERROR) << "unsupported reduce type: " << type; return nullptr; } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxReduceMeanParser("ReduceMean", new OnnxReduceParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_reshape_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_reshape_parser.cc index 7bae828763..6e7c5cc8a3 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_reshape_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_reshape_parser.cc @@ -22,11 +22,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxReshapeParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Reshape; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Reshape failed"; - return nullptr; - } + auto prim = std::make_unique(); std::vector shape; shape.clear(); @@ -37,12 +33,12 @@ ops::PrimitiveC *OnnxReshapeParser::Parse(const onnx::GraphProto &onnx_graph, co for (int i = 0; i < onnx_node_attr.ints_size(); ++i) { shape.push_back(static_cast(onnx_node_attr.ints(i))); } - primitive_c->AddAttr("shape", MakeValue(shape)); + prim->AddAttr("shape", MakeValue(shape)); } } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxReshapeParser("Reshape", new OnnxReshapeParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_resize_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_resize_parser.cc index b8fae58a91..1b5e20aab4 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_resize_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_resize_parser.cc @@ -34,14 +34,11 @@ ops::PrimitiveC *OnnxResizeParser::Parse(const onnx::GraphProto &onnx_graph, con } // use bilinear method - auto primitive_c = new (std::nothrow) ops::Resize; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Resize failed"; - return nullptr; - } + auto prim = std::make_unique(); + + prim->set_format(mindspore::Format::NCHW); + prim->set_nearest_mode(mindspore::NearestMode::ROUND_HALF_DOWN); - primitive_c->set_format(mindspore::Format::NCHW); - primitive_c->set_nearest_mode(mindspore::NearestMode::ROUND_HALF_DOWN); for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "coordinate_transformation_mode") { @@ -51,24 +48,24 @@ ops::PrimitiveC *OnnxResizeParser::Parse(const onnx::GraphProto &onnx_graph, con {"align_corners", mindspore::CoordinateTransformMode::ALIGN_CORNERS}, {"asymmetric", mindspore::CoordinateTransformMode::ASYMMETRIC}}; if (transform_map.find(onnx_node_attr.s()) != transform_map.end()) { - primitive_c->set_coordinate_transform_mode(transform_map[onnx_node_attr.s()]); + prim->set_coordinate_transform_mode(transform_map[onnx_node_attr.s()]); } else { MS_LOG(ERROR) << "Unsupport coordinate transform mode: " << attribute_name; return nullptr; } } else if (attribute_name == "cubic_coeff_a") { - primitive_c->set_cubic_coeff(onnx_node_attr.f()); + prim->set_cubic_coeff(onnx_node_attr.f()); } else if (attribute_name == "exclude_outside") { - primitive_c->set_exclude_outside(onnx_node_attr.i()); + prim->set_exclude_outside(onnx_node_attr.i()); } else if (attribute_name == "extrapolation_value") { - primitive_c->set_extrapolation_value(onnx_node_attr.f()); + prim->set_extrapolation_value(onnx_node_attr.f()); } else if (attribute_name == "mode") { std::map resize_mode = { {"nearest", mindspore::ResizeMethod::NEAREST}, {"linear", mindspore::ResizeMethod::LINEAR}, {"cubic", mindspore::ResizeMethod::CUBIC}, }; - primitive_c->set_method(resize_mode[onnx_node_attr.s()]); + prim->set_method(resize_mode[onnx_node_attr.s()]); } else if (attribute_name == "nearest_mode") { std::map nearest_mode = { {"round_prefer_floor", mindspore::NearestMode::ROUND_HALF_DOWN}, @@ -76,11 +73,11 @@ ops::PrimitiveC *OnnxResizeParser::Parse(const onnx::GraphProto &onnx_graph, con {"floor", mindspore::NearestMode::FLOOR}, {"ceil", mindspore::NearestMode::CEIL}, }; - primitive_c->set_nearest_mode(nearest_mode[onnx_node_attr.s()]); + prim->set_nearest_mode(nearest_mode[onnx_node_attr.s()]); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxResizeParser("Resize", new OnnxResizeParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_shape_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_shape_parser.cc index 8f4c4cc93e..61392618c0 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_shape_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_shape_parser.cc @@ -21,13 +21,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxShapeParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Shape; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Shape failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } OnnxNodeRegistrar g_onnxShapeParser("Shape", new OnnxShapeParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_slice_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_slice_parser.cc index a9150db422..99024b3546 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_slice_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_slice_parser.cc @@ -26,11 +26,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxSliceParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::StridedSlice; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new StridedSlice failed"; - return nullptr; - } + auto prim = std::make_unique(); std::vector starts; std::vector ends; @@ -76,7 +72,7 @@ ops::PrimitiveC *OnnxSliceParser::Parse(const onnx::GraphProto &onnx_graph, cons size = static_cast(steps.size()); } if (size == -1) { - return primitive_c; + return prim.release(); } if (axes.empty()) { for (size_t i = 0; i < starts.size(); ++i) { @@ -87,11 +83,12 @@ ops::PrimitiveC *OnnxSliceParser::Parse(const onnx::GraphProto &onnx_graph, cons steps.assign(starts.size(), 1); } - primitive_c->AddAttr("starts", MakeValue(starts)); - primitive_c->AddAttr("axes", MakeValue(axes)); - primitive_c->AddAttr("ends", MakeValue(ends)); - primitive_c->AddAttr("steps", MakeValue(steps)); - return primitive_c; + prim->AddAttr("starts", MakeValue(starts)); + prim->AddAttr("axes", MakeValue(axes)); + prim->AddAttr("ends", MakeValue(ends)); + prim->AddAttr("steps", MakeValue(steps)); + + return prim.release(); } OnnxNodeRegistrar g_onnxSliceParser("Slice", new OnnxSliceParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_softmax_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_softmax_parser.cc index 2d2f2a42ff..a6be2910df 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_softmax_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_softmax_parser.cc @@ -21,11 +21,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxSoftMaxParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Softmax; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new SoftMax failed"; - return nullptr; - } + auto prim = std::make_unique(); int64_t axis; bool axis_is_def = true; @@ -39,9 +35,9 @@ ops::PrimitiveC *OnnxSoftMaxParser::Parse(const onnx::GraphProto &onnx_graph, co if (axis_is_def) { axis = OnnxNodeParser::opset_version() >= 13 ? -1 : 1; } - primitive_c->set_axis({axis}); + prim->set_axis({axis}); - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxSoftMaxParser("Softmax", new OnnxSoftMaxParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_space_to_depth_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_space_to_depth_parser.cc index b95f721be2..d28aebee93 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_space_to_depth_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_space_to_depth_parser.cc @@ -21,20 +21,16 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxSpaceToDepthParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::SpaceToDepth; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new SpaceToDepth failed"; - return nullptr; - } + auto prim = std::make_unique(); for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "blocksize") { - primitive_c->set_block_size(onnx_node_attr.i()); + prim->set_block_size(onnx_node_attr.i()); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxSpaceToDepthParser("SpaceToDepth", new OnnxSpaceToDepthParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_split_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_split_parser.cc index 7dc7ca511d..0e4d5cdaae 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_split_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_split_parser.cc @@ -23,31 +23,28 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxSplitParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Split; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Split failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_axis(0); + prim->set_axis(0); std::vector size_splits; int64_t split_num = 0; for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "axis") { - primitive_c->set_axis(onnx_node_attr.i()); + prim->set_axis(onnx_node_attr.i()); } else if (attribute_name == "split") { size_splits.resize(onnx_node_attr.ints_size()); std::copy(onnx_node_attr.ints().begin(), onnx_node_attr.ints().end(), size_splits.begin()); - primitive_c->set_size_splits(size_splits); + prim->set_size_splits(size_splits); split_num = onnx_node_attr.ints_size(); } } if (split_num == 0) { split_num = onnx_node.output_size(); } - primitive_c->set_output_num(split_num); - return primitive_c; + prim->set_output_num(split_num); + + return prim.release(); } OnnxNodeRegistrar g_onnxSplitParser("Split", new OnnxSplitParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_squeeze_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_squeeze_parser.cc index c35858ab30..a62732864e 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_squeeze_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_squeeze_parser.cc @@ -22,11 +22,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxSqueezeParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Squeeze; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Squeeze failed"; - return nullptr; - } + auto prim = std::make_unique(); std::vector axis; for (const auto &onnx_node_attr : onnx_node.attribute()) { @@ -35,11 +31,11 @@ ops::PrimitiveC *OnnxSqueezeParser::Parse(const onnx::GraphProto &onnx_graph, co for (int i = 0; i < onnx_node_attr.ints().size(); ++i) { axis.emplace_back(onnx_node_attr.ints(i)); } - primitive_c->set_axis(axis); + prim->set_axis(axis); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxSqueezeParser("Squeeze", new OnnxSqueezeParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_tile_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_tile_parser.cc index 80fc3e38c6..a2a604fcb0 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_tile_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_tile_parser.cc @@ -21,13 +21,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxTileParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::TileFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new TileFusion failed"; - return nullptr; - } - - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } OnnxNodeRegistrar g_onnxTileParser("Tile", new OnnxTileParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_topk_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_topk_parser.cc index d24de880ee..08071157f9 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_topk_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_topk_parser.cc @@ -21,20 +21,16 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxTopkParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::TopKFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new TopKFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "k") { - primitive_c->AddAttr("k", MakeValue(static_cast(onnx_node_attr.i()))); + prim->AddAttr("k", MakeValue(static_cast(onnx_node_attr.i()))); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxTopkParser("TopK", new OnnxTopkParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_transpose_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_transpose_parser.cc index f0eb28f436..5232af329c 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_transpose_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_transpose_parser.cc @@ -22,11 +22,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxTransposeParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Transpose; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Transpose failed"; - return nullptr; - } + auto prim = std::make_unique(); std::vector perm; for (const auto &onnx_node_attr : onnx_node.attribute()) { @@ -36,11 +32,11 @@ ops::PrimitiveC *OnnxTransposeParser::Parse(const onnx::GraphProto &onnx_graph, for (int i = 0; i < onnx_node_attr.ints_size(); ++i) { perm[i] = onnx_node_attr.ints(i); } - primitive_c->AddAttr("perm", MakeValue(perm)); + prim->AddAttr("perm", MakeValue(perm)); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxTransposeParser("Transpose", new OnnxTransposeParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_unsqueeze_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_unsqueeze_parser.cc index d59a9e0f71..6fe3a53ac6 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_unsqueeze_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_unsqueeze_parser.cc @@ -22,11 +22,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxUnSqueezeParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - auto primitive_c = new (std::nothrow) ops::Unsqueeze; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Unsqueeze failed"; - return nullptr; - } + auto prim = std::make_unique(); std::vector axis; for (const auto &onnx_node_attr : onnx_node.attribute()) { @@ -35,11 +31,11 @@ ops::PrimitiveC *OnnxUnSqueezeParser::Parse(const onnx::GraphProto &onnx_graph, for (int i = 0; i < onnx_node_attr.ints().size(); ++i) { axis.emplace_back(onnx_node_attr.ints(i)); } - primitive_c->set_axis(axis); + prim->set_axis(axis); } } - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxUnsqueezeParser("Unsqueeze", new OnnxUnSqueezeParser()); diff --git a/mindspore/lite/tools/converter/parser/onnx/onnx_upsample_parser.cc b/mindspore/lite/tools/converter/parser/onnx/onnx_upsample_parser.cc index 16d2698bc2..e3ef10aaba 100644 --- a/mindspore/lite/tools/converter/parser/onnx/onnx_upsample_parser.cc +++ b/mindspore/lite/tools/converter/parser/onnx/onnx_upsample_parser.cc @@ -23,14 +23,10 @@ namespace mindspore { namespace lite { ops::PrimitiveC *OnnxUpsampleParser::Parse(const onnx::GraphProto &onnx_graph, const onnx::NodeProto &onnx_node) { - // use bilinear method - auto primitive_c = new (std::nothrow) ops::Resize; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Resize failed"; - return nullptr; - } + auto prim = std::make_unique(); + + prim->set_method(mindspore::ResizeMethod::NEAREST); // use bilinear method - primitive_c->set_method(mindspore::ResizeMethod::NEAREST); for (const auto &onnx_node_attr : onnx_node.attribute()) { const auto &attribute_name = onnx_node_attr.name(); if (attribute_name == "mode") { @@ -38,13 +34,13 @@ ops::PrimitiveC *OnnxUpsampleParser::Parse(const onnx::GraphProto &onnx_graph, c MS_LOG(ERROR) << "the UpSample mode don't support now."; return nullptr; } - primitive_c->set_method(onnx_node_attr.s() == "nearest" ? mindspore::ResizeMethod::NEAREST - : mindspore::ResizeMethod::LINEAR); + prim->set_method(onnx_node_attr.s() == "nearest" ? mindspore::ResizeMethod::NEAREST + : mindspore::ResizeMethod::LINEAR); } } - primitive_c->set_coordinate_transform_mode(mindspore::CoordinateTransformMode::ASYMMETRIC); + prim->set_coordinate_transform_mode(mindspore::CoordinateTransformMode::ASYMMETRIC); - return primitive_c; + return prim.release(); } OnnxNodeRegistrar g_onnxUpsampleParser("Upsample", new OnnxUpsampleParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_activation_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_activation_parser.cc index 038b699e94..62b05d5435 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_activation_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_activation_parser.cc @@ -25,20 +25,16 @@ namespace lite { ops::PrimitiveC *TFActivationParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::Activation(); - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Activation failed"; - return nullptr; - } + auto prim = std::make_unique(); if (tf_op.op() == "Relu") { - primitive_c->set_activation_type(mindspore::ActivationType::RELU); + prim->set_activation_type(mindspore::ActivationType::RELU); } else if (tf_op.op() == "Relu6") { - primitive_c->set_activation_type(mindspore::ActivationType::RELU6); + prim->set_activation_type(mindspore::ActivationType::RELU6); } else if (tf_op.op() == "Sigmoid") { - primitive_c->set_activation_type(mindspore::ActivationType::SIGMOID); + prim->set_activation_type(mindspore::ActivationType::SIGMOID); } else if (tf_op.op() == "Tanh") { - primitive_c->set_activation_type(mindspore::ActivationType::TANH); + prim->set_activation_type(mindspore::ActivationType::TANH); } else { MS_LOG(ERROR) << "unsupported activation type:" << tf_op.op(); return nullptr; @@ -49,7 +45,8 @@ ops::PrimitiveC *TFActivationParser::Parse(const tensorflow::NodeDef &tf_op, MS_LOG(ERROR) << "add op input failed"; return nullptr; } - return primitive_c; + + return prim.release(); } TFNodeRegistrar g_tfReluParser("Relu", new TFActivationParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_arithmetic_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_arithmetic_parser.cc index bf1e6c9076..631233be55 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_arithmetic_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_arithmetic_parser.cc @@ -44,89 +44,41 @@ ops::PrimitiveC *TFArithmeticParser::Parse(const tensorflow::NodeDef &tf_op, } if (tf_op.op() == "Add" || tf_op.op() == "AddV2") { - auto primitive_c = new (std::nothrow) ops::AddFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new AddFusion failed"; - return nullptr; - } - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } else if (tf_op.op() == "Sub") { - auto primitive_c = new (std::nothrow) ops::SubFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new SubFusion failed"; - return nullptr; - } - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } else if (tf_op.op() == "Mul") { - auto primitive_c = new (std::nothrow) ops::MulFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new MulFusion failed"; - return nullptr; - } - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } else if (tf_op.op() == "Div" || tf_op.op() == "RealDiv") { - auto primitive_c = new (std::nothrow) ops::DivFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new DivFusion failed"; - return nullptr; - } - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } else if (tf_op.op() == "Maximum") { - auto primitive_c = new (std::nothrow) ops::Maximum; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Maximum failed"; - return nullptr; - } - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } else if (tf_op.op() == "Minimum") { - auto primitive_c = new (std::nothrow) ops::Minimum; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Minimum failed"; - return nullptr; - } - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } else if (tf_op.op() == "Greater") { - auto primitive_c = new (std::nothrow) ops::Greater; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Greater failed"; - return nullptr; - } - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } else if (tf_op.op() == "GreaterEqual") { - auto primitive_c = new (std::nothrow) ops::GreaterEqual; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new GreaterEqual failed"; - return nullptr; - } - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } else if (tf_op.op() == "Less") { - auto primitive_c = new (std::nothrow) ops::Less; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Less failed"; - return nullptr; - } - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } else if (tf_op.op() == "LessEqual") { - auto primitive_c = new (std::nothrow) ops::LessEqual; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new LessEqual failed"; - return nullptr; - } - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } else if (tf_op.op() == "Equal") { - auto primitive_c = new (std::nothrow) ops::Equal; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Equal failed"; - return nullptr; - } - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } else if (tf_op.op() == "NotEqual") { - auto primitive_c = new (std::nothrow) ops::NotEqual; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new NotEqual failed"; - return nullptr; - } - return primitive_c; + auto prim = std::make_unique(); + return prim.release(); } return nullptr; } diff --git a/mindspore/lite/tools/converter/parser/tf/tf_assert_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_assert_parser.cc index 1660389901..1b34e607f6 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_assert_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_assert_parser.cc @@ -26,18 +26,14 @@ namespace lite { ops::PrimitiveC *TFAssertParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::Assert; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "New Assert failed"; - return nullptr; - } + auto prim = std::make_unique(); tensorflow::AttrValue attr_value; if (!TensorFlowUtils::FindAttrValue(tf_op, "summarize", &attr_value)) { MS_LOG(ERROR) << "The keep_dims attr should be specified"; return nullptr; } - primitive_c->set_summarize((int64_t)(attr_value.i())); + prim->set_summarize((int64_t)(attr_value.i())); *output_size = 0; // Assert not have output for (int i = 0; i < tf_op.input_size(); ++i) { @@ -47,7 +43,7 @@ ops::PrimitiveC *TFAssertParser::Parse(const tensorflow::NodeDef &tf_op, } } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfAssertParser("Assert", new TFAssertParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_biasadd_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_biasadd_parser.cc index 514a603412..1e613ff621 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_biasadd_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_biasadd_parser.cc @@ -26,11 +26,7 @@ namespace lite { ops::PrimitiveC *TFBiasAddParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::BiasAdd; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new BiasAdd failed"; - return nullptr; - } + auto prim = std::make_unique(); *output_size = 1; if (AddOpInput(tf_op, 0, inputs) != RET_OK || AddOpInput(tf_op, 1, inputs) != RET_OK) { @@ -38,7 +34,7 @@ ops::PrimitiveC *TFBiasAddParser::Parse(const tensorflow::NodeDef &tf_op, return nullptr; } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfBiasAddParser("BiasAdd", new TFBiasAddParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_cast_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_cast_parser.cc index e402be4630..92621ada31 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_cast_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_cast_parser.cc @@ -26,18 +26,14 @@ namespace lite { ops::PrimitiveC *TFCastParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::Cast; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Cast failed"; - return nullptr; - } + auto prim = std::make_unique(); auto dst_type = TensorFlowUtils::ParseAttrDataType(tf_op, "DstT"); if (dst_type == kTypeUnknown) { MS_LOG(ERROR) << "Get attr DstT failed"; return nullptr; } - primitive_c->AddAttr("to", MakeValue(static_cast(dst_type))); + prim->AddAttr("to", MakeValue(static_cast(dst_type))); *output_size = 1; if (AddOpInput(tf_op, 0, inputs) != RET_OK) { @@ -45,7 +41,7 @@ ops::PrimitiveC *TFCastParser::Parse(const tensorflow::NodeDef &tf_op, return nullptr; } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfCastParser("Cast", new TFCastParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_concat_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_concat_parser.cc index 31c6828e0f..036c5e3dd4 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_concat_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_concat_parser.cc @@ -26,11 +26,7 @@ namespace lite { ops::PrimitiveC *TFConcatParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::Concat; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Concat failed"; - return nullptr; - } + auto prim = std::make_unique(); auto axis_node = GetConstInputNode(tf_node_map, tf_op.input(tf_op.input_size() - 1)); if (axis_node == nullptr) { @@ -43,7 +39,7 @@ ops::PrimitiveC *TFConcatParser::Parse(const tensorflow::NodeDef &tf_op, return nullptr; } auto tensor_proto = attr_value.tensor(); - primitive_c->set_axis(tensor_proto.int_val(0)); + prim->set_axis(tensor_proto.int_val(0)); *output_size = 1; for (int i = 0; i < tf_op.input_size() - 1; ++i) { @@ -53,7 +49,7 @@ ops::PrimitiveC *TFConcatParser::Parse(const tensorflow::NodeDef &tf_op, } } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfConcatV2Parser("ConcatV2", new TFConcatParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_conv_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_conv_parser.cc index 650553c632..d7ad3cb83a 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_conv_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_conv_parser.cc @@ -27,14 +27,10 @@ namespace lite { ops::PrimitiveC *TFConvParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::Conv2DFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Conv2DFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); - primitive_c->set_pad({0, 0, 0, 0}); - primitive_c->set_group(1); + prim->set_pad({0, 0, 0, 0}); + prim->set_group(1); // parse format auto format = TensorFlowUtils::ParseNodeFormat(tf_op); @@ -42,7 +38,7 @@ ops::PrimitiveC *TFConvParser::Parse(const tensorflow::NodeDef &tf_op, MS_LOG(ERROR) << "TF Conv2D with data_format=NCHW is not supported now"; return nullptr; } - primitive_c->set_format(format); + prim->set_format(format); // parse kernel auto weight_node = GetConstInputNode(tf_node_map, tf_op.input(1)); @@ -55,9 +51,9 @@ ops::PrimitiveC *TFConvParser::Parse(const tensorflow::NodeDef &tf_op, MS_LOG(ERROR) << "parse kernels failed"; return nullptr; } - primitive_c->set_kernel_size({kernels[0], kernels[1]}); - primitive_c->set_out_channel(kernels[3]); - primitive_c->set_in_channel(kernels[2]); + prim->set_kernel_size({kernels[0], kernels[1]}); + prim->set_out_channel(kernels[3]); + prim->set_in_channel(kernels[2]); // parse stride std::vector strides(2); @@ -65,7 +61,7 @@ ops::PrimitiveC *TFConvParser::Parse(const tensorflow::NodeDef &tf_op, MS_LOG(ERROR) << "parse strides failed"; return nullptr; } - primitive_c->set_stride(strides); + prim->set_stride(strides); // parse dilation std::vector dilations(2); @@ -73,11 +69,11 @@ ops::PrimitiveC *TFConvParser::Parse(const tensorflow::NodeDef &tf_op, MS_LOG(ERROR) << "parse dilations failed"; return nullptr; } - primitive_c->set_dilation(dilations); + prim->set_dilation(dilations); // parse pad - auto padMode = ParsePadMode(tf_op); - primitive_c->set_pad_mode(padMode); + auto pad_mode = ParsePadMode(tf_op); + prim->set_pad_mode(pad_mode); *output_size = 1; if (AddOpInput(tf_op, 0, inputs) != RET_OK || AddOpInput(tf_op, 1, inputs) != RET_OK) { @@ -85,7 +81,7 @@ ops::PrimitiveC *TFConvParser::Parse(const tensorflow::NodeDef &tf_op, return nullptr; } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfConvParser("Conv2D", new TFConvParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_expand_dims_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_expand_dims_parser.cc index b0027183a8..e7764765e3 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_expand_dims_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_expand_dims_parser.cc @@ -26,11 +26,7 @@ namespace lite { ops::PrimitiveC *TFExpandDimsParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::ExpandDims; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new ExpandDims failed"; - return nullptr; - } + auto prim = std::make_unique(); *output_size = 1; if (AddOpInput(tf_op, 0, inputs) != RET_OK || AddOpInput(tf_op, 1, inputs) != RET_OK) { @@ -38,7 +34,7 @@ ops::PrimitiveC *TFExpandDimsParser::Parse(const tensorflow::NodeDef &tf_op, return nullptr; } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfExpandDimsParser("ExpandDims", new TFExpandDimsParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_gather_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_gather_parser.cc index 2999f983ba..248a255e09 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_gather_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_gather_parser.cc @@ -26,11 +26,7 @@ namespace lite { ops::PrimitiveC *TFGatherParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::Gather; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Gather failed"; - return nullptr; - } + auto prim = std::make_unique(); int batchDims = 0; tensorflow::AttrValue attr_value; @@ -72,7 +68,7 @@ ops::PrimitiveC *TFGatherParser::Parse(const tensorflow::NodeDef &tf_op, if (batchDims != 0 && !axis_is_set) { axis = batchDims; } - primitive_c->AddAttr("axis", MakeValue(axis)); + prim->AddAttr("axis", MakeValue(axis)); *output_size = 1; if (AddOpInput(tf_op, 0, inputs) != RET_OK || AddOpInput(tf_op, 1, inputs) != RET_OK) { @@ -80,7 +76,7 @@ ops::PrimitiveC *TFGatherParser::Parse(const tensorflow::NodeDef &tf_op, return nullptr; } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfGatherV2Parser("GatherV2", new TFGatherParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_logical_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_logical_parser.cc index 4e635e0c44..198063cf79 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_logical_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_logical_parser.cc @@ -27,16 +27,12 @@ ops::PrimitiveC *TFLogicalParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { if (tf_op.op() == "LogicalAnd") { - auto primitive_c = new (std::nothrow) ops::LogicalAnd; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new LogicalAnd failed"; - return nullptr; - } + auto prim = std::make_unique(); *output_size = 1; for (int i = 0; i < tf_op.input_size(); i++) { inputs->emplace_back(tf_op.input(i)); } - return primitive_c; + return prim.release(); } else { MS_LOG(ERROR) << "only LogicalAnd is supported now"; return nullptr; diff --git a/mindspore/lite/tools/converter/parser/tf/tf_matmul_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_matmul_parser.cc index 95141c20bb..3541629aa8 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_matmul_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_matmul_parser.cc @@ -26,18 +26,14 @@ namespace lite { ops::PrimitiveC *TFMatMulParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::MatMul; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new MatMul failed"; - return nullptr; - } + auto prim = std::make_unique(); tensorflow::AttrValue attr_value; if (TensorFlowUtils::FindAttrValue(tf_op, "transpose_a", &attr_value)) { - primitive_c->set_transpose_a(attr_value.b()); + prim->set_transpose_a(attr_value.b()); } if (TensorFlowUtils::FindAttrValue(tf_op, "transpose_b", &attr_value)) { - primitive_c->set_transpose_b(attr_value.b()); + prim->set_transpose_b(attr_value.b()); } *output_size = 1; @@ -46,7 +42,7 @@ ops::PrimitiveC *TFMatMulParser::Parse(const tensorflow::NodeDef &tf_op, return nullptr; } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfMatMulParser("MatMul", new TFMatMulParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_pack_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_pack_parser.cc index 12d1be8445..f008f70f9c 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_pack_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_pack_parser.cc @@ -26,18 +26,14 @@ namespace lite { ops::PrimitiveC *TFPackParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::Stack; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Stack failed"; - return nullptr; - } + auto prim = std::make_unique(); tensorflow::AttrValue attr_value; if (!TensorFlowUtils::FindAttrValue(tf_op, "axis", &attr_value)) { MS_LOG(ERROR) << "The axis attr should be specified"; return nullptr; } - primitive_c->set_axis({attr_value.i()}); + prim->set_axis({attr_value.i()}); *output_size = 1; for (int i = 0; i < tf_op.input_size(); ++i) { @@ -47,7 +43,7 @@ ops::PrimitiveC *TFPackParser::Parse(const tensorflow::NodeDef &tf_op, } } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfPackParser("Pack", new TFPackParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_ragged_range_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_ragged_range_parser.cc index 987516c0c1..86d9ad2ae5 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_ragged_range_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_ragged_range_parser.cc @@ -32,30 +32,26 @@ ops::PrimitiveC *TFRaggedRangeParser::Parse(const tensorflow::NodeDef &tf_op, return nullptr; } - auto primitive = new (std::nothrow) ops::Range; - if (primitive == nullptr) { - MS_LOG(ERROR) << "New RaggedRange failed"; - return nullptr; - } + auto prim = std::make_unique(); tensorflow::AttrValue attr_value; if (!TensorFlowUtils::FindAttrValue(tf_op, "starts", &attr_value)) { MS_LOG(ERROR) << "The starts attr should be specified"; return nullptr; } - primitive->set_start(static_cast(attr_value.i())); + prim->set_start(static_cast(attr_value.i())); if (!TensorFlowUtils::FindAttrValue(tf_op, "limits", &attr_value)) { MS_LOG(ERROR) << "The limits attr should be specified"; return nullptr; } - primitive->set_limit(static_cast(attr_value.i())); + prim->set_limit(static_cast(attr_value.i())); if (!TensorFlowUtils::FindAttrValue(tf_op, "deltas", &attr_value)) { MS_LOG(ERROR) << "The deltas attr should be specified"; return nullptr; } - primitive->set_delta(static_cast(attr_value.i())); + prim->set_delta(static_cast(attr_value.i())); *output_size = 1; auto status = AddOpInput(tf_op, 0, inputs); @@ -63,7 +59,7 @@ ops::PrimitiveC *TFRaggedRangeParser::Parse(const tensorflow::NodeDef &tf_op, MS_LOG(ERROR) << "add op input is failed!"; return nullptr; } - return primitive; + return prim.release(); } TFNodeRegistrar g_tfRaggedRangeParser("RaggedRange", new TFRaggedRangeParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_range_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_range_parser.cc index 5e95737a92..801e741f41 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_range_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_range_parser.cc @@ -33,23 +33,19 @@ ops::PrimitiveC *TFRangeParser::Parse(const tensorflow::NodeDef &tf_op, return nullptr; } - auto primitive_c = new (std::nothrow) ops::Range; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "New Range failed"; - return nullptr; - } + auto prim = std::make_unique(); tensorflow::AttrValue attr_value; if (TensorFlowUtils::FindAttrValue(tf_op, "start", &attr_value)) { - primitive_c->set_start(static_cast(attr_value.i())); + prim->set_start(static_cast(attr_value.i())); } if (TensorFlowUtils::FindAttrValue(tf_op, "limit", &attr_value)) { - primitive_c->set_limit(static_cast(attr_value.i())); + prim->set_limit(static_cast(attr_value.i())); } if (TensorFlowUtils::FindAttrValue(tf_op, "delta", &attr_value)) { - primitive_c->set_delta(static_cast(attr_value.i())); + prim->set_delta(static_cast(attr_value.i())); } *output_size = 1; @@ -60,7 +56,8 @@ ops::PrimitiveC *TFRangeParser::Parse(const tensorflow::NodeDef &tf_op, MS_LOG(ERROR) << "add op input failed!"; return nullptr; } - return primitive_c; + + return prim.release(); } TFNodeRegistrar g_tfRangeParser("Range", new TFRangeParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_reduce_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_reduce_parser.cc index 0decf650fa..b0eb803f89 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_reduce_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_reduce_parser.cc @@ -26,24 +26,20 @@ namespace lite { ops::PrimitiveC *TFReduceParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::ReduceFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new ReduceFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); if (tf_op.op() == "Sum") { - primitive_c->set_mode(mindspore::ReduceMode::Reduce_Sum); + prim->set_mode(mindspore::ReduceMode::Reduce_Sum); } else if (tf_op.op() == "Max") { - primitive_c->set_mode(mindspore::ReduceMode::Reduce_Max); + prim->set_mode(mindspore::ReduceMode::Reduce_Max); } else if (tf_op.op() == "Min") { - primitive_c->set_mode(mindspore::ReduceMode::Reduce_Min); + prim->set_mode(mindspore::ReduceMode::Reduce_Min); } else if (tf_op.op() == "Mean") { - primitive_c->set_mode(mindspore::ReduceMode::Reduce_Mean); + prim->set_mode(mindspore::ReduceMode::Reduce_Mean); } else if (tf_op.op() == "Prod") { - primitive_c->set_mode(mindspore::ReduceMode::Reduce_Prod); + prim->set_mode(mindspore::ReduceMode::Reduce_Prod); } else if (tf_op.op() == "All") { - primitive_c->set_mode(mindspore::ReduceMode::Reduce_All); + prim->set_mode(mindspore::ReduceMode::Reduce_All); } else { MS_LOG(ERROR) << "unsupported reduce mode: " << tf_op.op(); return nullptr; @@ -59,7 +55,7 @@ ops::PrimitiveC *TFReduceParser::Parse(const tensorflow::NodeDef &tf_op, MS_LOG(ERROR) << "the keep_dims attr of reduce should be bool type"; return nullptr; } - primitive_c->set_keep_dims(attr_value.b()); + prim->set_keep_dims(attr_value.b()); *output_size = 1; if (AddOpInput(tf_op, 0, inputs) != RET_OK || AddOpInput(tf_op, 1, inputs) != RET_OK) { @@ -67,7 +63,7 @@ ops::PrimitiveC *TFReduceParser::Parse(const tensorflow::NodeDef &tf_op, return nullptr; } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfSumParser("Sum", new TFReduceParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_reshape_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_reshape_parser.cc index f3af1772c5..41c0c1f5a6 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_reshape_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_reshape_parser.cc @@ -26,11 +26,7 @@ namespace lite { ops::PrimitiveC *TFReshapeParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::Reshape; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Reshape failed"; - return nullptr; - } + auto prim = std::make_unique(); *output_size = 1; if (AddOpInput(tf_op, 0, inputs) != RET_OK || AddOpInput(tf_op, 1, inputs) != RET_OK) { @@ -38,7 +34,7 @@ ops::PrimitiveC *TFReshapeParser::Parse(const tensorflow::NodeDef &tf_op, return nullptr; } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfReshapeParser("Reshape", new TFReshapeParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_reverse_sequence_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_reverse_sequence_parser.cc index 03ca08722c..bb1a9a1796 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_reverse_sequence_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_reverse_sequence_parser.cc @@ -32,23 +32,19 @@ ops::PrimitiveC *TFReverseSequenceParser::Parse(const tensorflow::NodeDef &tf_op MS_LOG(ERROR) << "primitiveC is nullptr"; return nullptr; } - auto primitive = new (std::nothrow) ops::ReverseSequence; - if (primitive == nullptr) { - MS_LOG(ERROR) << "New ReverseSequenceParser failed"; - return nullptr; - } + auto prim = std::make_unique(); tensorflow::AttrValue attr_value; if (!TensorFlowUtils::FindAttrValue(tf_op, "batch_dim", &attr_value)) { MS_LOG(ERROR) << "The batch_dim attr should be specified"; return nullptr; } - primitive->set_batch_dim(attr_value.i()); + prim->set_batch_dim(attr_value.i()); if (!TensorFlowUtils::FindAttrValue(tf_op, "seq_dim", &attr_value)) { MS_LOG(ERROR) << "The seq_dim attr should be specified"; return nullptr; } - primitive->set_seq_dim(attr_value.i()); + prim->set_seq_dim(attr_value.i()); *output_size = 1; if (AddOpInput(tf_op, 0, inputs) != RET_OK || AddOpInput(tf_op, 1, inputs) != RET_OK) { @@ -56,7 +52,7 @@ ops::PrimitiveC *TFReverseSequenceParser::Parse(const tensorflow::NodeDef &tf_op return nullptr; } - return primitive; + return prim.release(); } TFNodeRegistrar g_tfReverseSequenceParser("ReverseSequence", new TFReverseSequenceParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_round_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_round_parser.cc index 7a480a8644..66e7d17e87 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_round_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_round_parser.cc @@ -26,11 +26,7 @@ namespace lite { ops::PrimitiveC *TFRoundParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::Round; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Round failed"; - return nullptr; - } + auto prim = std::make_unique(); *output_size = 1; if (AddOpInput(tf_op, 0, inputs) != RET_OK) { @@ -38,7 +34,7 @@ ops::PrimitiveC *TFRoundParser::Parse(const tensorflow::NodeDef &tf_op, return nullptr; } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfRoundParser("Round", new TFRoundParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_shape_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_shape_parser.cc index 503e571d3c..d9ebc035a5 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_shape_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_shape_parser.cc @@ -26,11 +26,7 @@ namespace lite { ops::PrimitiveC *TFShapeParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::Shape; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Shape failed"; - return nullptr; - } + auto prim = std::make_unique(); *output_size = 1; if (AddOpInput(tf_op, 0, inputs) != RET_OK) { @@ -38,7 +34,7 @@ ops::PrimitiveC *TFShapeParser::Parse(const tensorflow::NodeDef &tf_op, return nullptr; } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfShapeParser("Shape", new TFShapeParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_split_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_split_parser.cc index 99f04e3b44..76808015d1 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_split_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_split_parser.cc @@ -26,19 +26,15 @@ namespace lite { ops::PrimitiveC *TFSplitParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::Split; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Split failed"; - return nullptr; - } + auto prim = std::make_unique(); tensorflow::AttrValue attr_value; if (!TensorFlowUtils::FindAttrValue(tf_op, "num_split", &attr_value)) { MS_LOG(ERROR) << "The attribute num_split should be specified"; return nullptr; } - auto numberSplit = attr_value.i(); - primitive_c->set_output_num(numberSplit); + auto number_split = attr_value.i(); + prim->set_output_num(number_split); int split_dim_index = 2; int input_index = 0; @@ -57,7 +53,7 @@ ops::PrimitiveC *TFSplitParser::Parse(const tensorflow::NodeDef &tf_op, return nullptr; } auto splitDim = attr_value.tensor().int_val(0); - primitive_c->set_axis(splitDim); + prim->set_axis(splitDim); if (tf_op.op() == "SplitV") { auto size_splits_node = GetConstInputNode(tf_node_map, tf_op.input(1)); @@ -80,16 +76,16 @@ ops::PrimitiveC *TFSplitParser::Parse(const tensorflow::NodeDef &tf_op, MS_LOG(ERROR) << "memcpy_s failed"; return nullptr; } - primitive_c->set_size_splits(sizeSplits); + prim->set_size_splits(sizeSplits); } - *output_size = numberSplit; + *output_size = number_split; if (AddOpInput(tf_op, input_index, inputs) != RET_OK) { MS_LOG(ERROR) << "add op input failed"; return nullptr; } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfSplitParser("Split", new TFSplitParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_squeeze_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_squeeze_parser.cc index 496380094c..b812256e13 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_squeeze_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_squeeze_parser.cc @@ -27,11 +27,7 @@ namespace lite { ops::PrimitiveC *TFSqueezeParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::Squeeze; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Squeeze failed"; - return nullptr; - } + auto prim = std::make_unique(); std::vector axis; tensorflow::AttrValue attr_value; @@ -43,7 +39,7 @@ ops::PrimitiveC *TFSqueezeParser::Parse(const tensorflow::NodeDef &tf_op, for (int i = 0; i < dims.i_size(); ++i) { axis.push_back(dims.i(i)); } - primitive_c->set_axis(axis); + prim->set_axis(axis); *output_size = 1; if (AddOpInput(tf_op, 0, inputs) != RET_OK) { @@ -51,7 +47,7 @@ ops::PrimitiveC *TFSqueezeParser::Parse(const tensorflow::NodeDef &tf_op, return nullptr; } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfSqueezeParser("Squeeze", new TFSqueezeParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_stride_slice_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_stride_slice_parser.cc index b81e7ab033..8be59e404d 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_stride_slice_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_stride_slice_parser.cc @@ -27,42 +27,38 @@ namespace lite { ops::PrimitiveC *TFStrideSliceParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::StridedSlice; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new StridedSlice failed"; - return nullptr; - } + auto prim = std::make_unique(); tensorflow::AttrValue attr_value; if (!TensorFlowUtils::FindAttrValue(tf_op, "begin_mask", &attr_value)) { MS_LOG(ERROR) << "The begin_mask attr should be specified"; return nullptr; } - primitive_c->set_begin_mask(attr_value.i()); + prim->set_begin_mask(attr_value.i()); if (!TensorFlowUtils::FindAttrValue(tf_op, "end_mask", &attr_value)) { MS_LOG(ERROR) << "The end_mask attr should be specified"; return nullptr; } - primitive_c->set_end_mask(attr_value.i()); + prim->set_end_mask(attr_value.i()); if (!TensorFlowUtils::FindAttrValue(tf_op, "ellipsis_mask", &attr_value)) { MS_LOG(ERROR) << "The ellipsis_mask attr should be specified"; return nullptr; } - primitive_c->set_ellipsis_mask(attr_value.i()); + prim->set_ellipsis_mask(attr_value.i()); if (!TensorFlowUtils::FindAttrValue(tf_op, "new_axis_mask", &attr_value)) { MS_LOG(ERROR) << "The new_axis_mask attr should be specified"; return nullptr; } - primitive_c->set_new_axis_mask(attr_value.i()); + prim->set_new_axis_mask(attr_value.i()); if (!TensorFlowUtils::FindAttrValue(tf_op, "shrink_axis_mask", &attr_value)) { MS_LOG(ERROR) << "The shrink_axis_mask attr should be specified"; return nullptr; } - primitive_c->set_shrink_axis_mask(attr_value.i()); + prim->set_shrink_axis_mask(attr_value.i()); *output_size = 1; if (AddOpInput(tf_op, 0, inputs) != RET_OK || AddOpInput(tf_op, 1, inputs) != RET_OK || @@ -71,7 +67,7 @@ ops::PrimitiveC *TFStrideSliceParser::Parse(const tensorflow::NodeDef &tf_op, return nullptr; } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfStrideSliceParser("StridedSlice", new TFStrideSliceParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_from_tensor_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_from_tensor_parser.cc index d92d9f4731..c057b825cd 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_from_tensor_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_from_tensor_parser.cc @@ -26,11 +26,7 @@ namespace lite { ops::PrimitiveC *TFTensorListFromTensorParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive = new (std::nothrow) ops::TensorListFromTensor; - if (primitive == nullptr) { - MS_LOG(ERROR) << "New TensorListFromTensor failed"; - return nullptr; - } + auto prim = std::make_unique(); tensorflow::AttrValue attr_value; if (!TensorFlowUtils::FindAttrValue(tf_op, "element_dtype", &attr_value)) { @@ -42,7 +38,7 @@ ops::PrimitiveC *TFTensorListFromTensorParser::Parse(const tensorflow::NodeDef & MS_LOG(ERROR) << "tensor_list_from_tensor element dtype must be known type"; return nullptr; } - primitive->set_element_dtype((int64_t)(type)); + prim->set_element_dtype((int64_t)(type)); if (!TensorFlowUtils::FindAttrValue(tf_op, "shape_type", &attr_value)) { MS_LOG(ERROR) << "The shape_type attr should be specified"; @@ -53,7 +49,7 @@ ops::PrimitiveC *TFTensorListFromTensorParser::Parse(const tensorflow::NodeDef & MS_LOG(ERROR) << "tensor_list_from_tensor shape type must be known type"; return nullptr; } - primitive->set_shape_type((int64_t)(type)); + prim->set_shape_type((int64_t)(type)); *output_size = 1; for (int i = 0; i < 2; ++i) { @@ -63,7 +59,7 @@ ops::PrimitiveC *TFTensorListFromTensorParser::Parse(const tensorflow::NodeDef & } } - return primitive; + return prim.release(); } TFNodeRegistrar g_tfTensorListFromTensorParser("TensorListFromTensor", new TFTensorListFromTensorParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_get_item_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_get_item_parser.cc index a70157b295..108ead0935 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_get_item_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_get_item_parser.cc @@ -26,11 +26,7 @@ namespace lite { ops::PrimitiveC *TFTensorListGetItemParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive = new (std::nothrow) ops::TensorListGetItem; - if (primitive == nullptr) { - MS_LOG(ERROR) << "New TensorListGetItem failed"; - return nullptr; - } + auto prim = std::make_unique(); tensorflow::AttrValue attr_value; if (!TensorFlowUtils::FindAttrValue(tf_op, "element_dtype", &attr_value)) { @@ -42,7 +38,7 @@ ops::PrimitiveC *TFTensorListGetItemParser::Parse(const tensorflow::NodeDef &tf_ MS_LOG(ERROR) << "tensor_list_get_item element_dtype must be known type"; return nullptr; } - primitive->set_element_dtype((int64_t)(type)); + prim->set_element_dtype((int64_t)(type)); *output_size = 1; for (int i = 0; i < 3; ++i) { @@ -52,7 +48,7 @@ ops::PrimitiveC *TFTensorListGetItemParser::Parse(const tensorflow::NodeDef &tf_ } } - return primitive; + return prim.release(); } TFNodeRegistrar g_tfTensorListGetItemParser("TensorListGetItem", new TFTensorListGetItemParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_reserve_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_reserve_parser.cc index 3141d9cef0..5f3f9d4ee9 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_reserve_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_reserve_parser.cc @@ -26,11 +26,7 @@ namespace lite { ops::PrimitiveC *TFTensorListReserveParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive = new (std::nothrow) ops::TensorListReserve; - if (primitive == nullptr) { - MS_LOG(ERROR) << "New TensorListReserve failed"; - return nullptr; - } + auto prim = std::make_unique(); tensorflow::AttrValue attr_value; if (!TensorFlowUtils::FindAttrValue(tf_op, "element_dtype", &attr_value)) { @@ -42,7 +38,7 @@ ops::PrimitiveC *TFTensorListReserveParser::Parse(const tensorflow::NodeDef &tf_ MS_LOG(ERROR) << "tensor_list_reserve element dtype must be known type"; return nullptr; } - primitive->set_element_dtype((int64_t)(type)); + prim->set_element_dtype((int64_t)(type)); if (!TensorFlowUtils::FindAttrValue(tf_op, "shape_type", &attr_value)) { MS_LOG(ERROR) << "The shape_type attr should be specified"; @@ -53,7 +49,7 @@ ops::PrimitiveC *TFTensorListReserveParser::Parse(const tensorflow::NodeDef &tf_ MS_LOG(ERROR) << "tensor_list_reserve shape_type must be known type"; return nullptr; } - primitive->set_shape_type((int64_t)(type)); + prim->set_shape_type((int64_t)(type)); *output_size = 1; for (int i = 0; i < 2; ++i) { @@ -63,7 +59,7 @@ ops::PrimitiveC *TFTensorListReserveParser::Parse(const tensorflow::NodeDef &tf_ } } - return primitive; + return prim.release(); } TFNodeRegistrar g_tfTensorListReserveParser("TensorListReserve", new TFTensorListReserveParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_set_item_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_set_item_parser.cc index d779fa9939..0bcb25acf6 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_set_item_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_set_item_parser.cc @@ -26,11 +26,7 @@ namespace lite { ops::PrimitiveC *TFTensorListSetItemParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive = new (std::nothrow) ops::TensorListSetItem; - if (primitive == nullptr) { - MS_LOG(ERROR) << "New TensorListSetItem failed"; - return nullptr; - } + auto prim = std::make_unique(); tensorflow::AttrValue attr_value; if (!TensorFlowUtils::FindAttrValue(tf_op, "element_dtype", &attr_value)) { @@ -42,7 +38,7 @@ ops::PrimitiveC *TFTensorListSetItemParser::Parse(const tensorflow::NodeDef &tf_ MS_LOG(ERROR) << "tensor_list_set_item element dtype must be known type"; return nullptr; } - primitive->set_element_dtype((int64_t)(type)); + prim->set_element_dtype((int64_t)(type)); *output_size = 1; for (int i = 0; i < 3; ++i) { @@ -51,7 +47,7 @@ ops::PrimitiveC *TFTensorListSetItemParser::Parse(const tensorflow::NodeDef &tf_ return nullptr; } } - return primitive; + return prim.release(); } TFNodeRegistrar g_tfTensorListSetItemParser("TensorListSetItem", new TFTensorListSetItemParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_stack_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_stack_parser.cc index 80d5f81aed..9cbf2af1e7 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_stack_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_tensor_list_stack_parser.cc @@ -26,11 +26,7 @@ namespace lite { ops::PrimitiveC *TFTensorListStackParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive = new (std::nothrow) ops::TensorListStack; - if (primitive == nullptr) { - MS_LOG(ERROR) << "New TensorListStack failed"; - return nullptr; - } + auto prim = std::make_unique(); tensorflow::AttrValue attr_value; if (!TensorFlowUtils::FindAttrValue(tf_op, "element_dtype", &attr_value)) { @@ -42,13 +38,13 @@ ops::PrimitiveC *TFTensorListStackParser::Parse(const tensorflow::NodeDef &tf_op MS_LOG(ERROR) << "tensor_list_stack element_dtype must be known type"; return nullptr; } - primitive->set_element_dtype((int64_t)(type)); + prim->set_element_dtype((int64_t)(type)); if (!TensorFlowUtils::FindAttrValue(tf_op, "num_elements", &attr_value)) { MS_LOG(ERROR) << "The element_dtype attr should be specified"; return nullptr; } - primitive->set_num_elements(attr_value.i()); + prim->set_num_elements(attr_value.i()); *output_size = 1; for (int i = 0; i < 2; ++i) { @@ -58,7 +54,7 @@ ops::PrimitiveC *TFTensorListStackParser::Parse(const tensorflow::NodeDef &tf_op } } - return primitive; + return prim.release(); } TFNodeRegistrar g_tfTensorListStackParser("TensorListStack", new TFTensorListStackParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_tile_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_tile_parser.cc index 14e78b07a4..bef8ce0bed 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_tile_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_tile_parser.cc @@ -26,11 +26,7 @@ namespace lite { ops::PrimitiveC *TFTileParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::TileFusion; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new TileFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); tensorflow::AttrValue attr_value; std::vector dims; @@ -45,14 +41,14 @@ ops::PrimitiveC *TFTileParser::Parse(const tensorflow::NodeDef &tf_op, dims.push_back(i); } } - primitive_c->set_dims(dims); + prim->set_dims(dims); *output_size = 1; if (AddOpInput(tf_op, 0, inputs) != RET_OK || AddOpInput(tf_op, 1, inputs) != RET_OK) { MS_LOG(ERROR) << "add op input failed"; return nullptr; } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfTileParser("Tile", new TFTileParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_transpose_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_transpose_parser.cc index 06bbc8c777..7aee38e567 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_transpose_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_transpose_parser.cc @@ -26,11 +26,7 @@ namespace lite { ops::PrimitiveC *TFTransposeParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::Transpose; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new Transpose failed"; - return nullptr; - } + auto prim = std::make_unique(); *output_size = 1; if (AddOpInput(tf_op, 0, inputs) != RET_OK || AddOpInput(tf_op, 1, inputs) != RET_OK) { @@ -38,7 +34,7 @@ ops::PrimitiveC *TFTransposeParser::Parse(const tensorflow::NodeDef &tf_op, return nullptr; } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfTransposeParser("Transpose", new TFTransposeParser()); diff --git a/mindspore/lite/tools/converter/parser/tf/tf_while_parser.cc b/mindspore/lite/tools/converter/parser/tf/tf_while_parser.cc index b7ed69037d..0f6edc4284 100644 --- a/mindspore/lite/tools/converter/parser/tf/tf_while_parser.cc +++ b/mindspore/lite/tools/converter/parser/tf/tf_while_parser.cc @@ -26,11 +26,7 @@ namespace lite { ops::PrimitiveC *TFWhileParser::Parse(const tensorflow::NodeDef &tf_op, const std::map &tf_node_map, std::vector *inputs, int *output_size) { - auto primitive_c = new (std::nothrow) ops::While; - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "new While failed"; - return nullptr; - } + auto prim = std::make_unique(); *output_size = tf_op.input_size(); for (int i = 0; i < tf_op.input_size(); ++i) { @@ -40,7 +36,7 @@ ops::PrimitiveC *TFWhileParser::Parse(const tensorflow::NodeDef &tf_op, } } - return primitive_c; + return prim.release(); } TFNodeRegistrar g_tfStatelessWhileParser("StatelessWhile", new TFWhileParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_activation_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_activation_parser.cc index 417ad65c5d..830e189930 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_activation_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_activation_parser.cc @@ -18,7 +18,6 @@ #include #include #include "tools/converter/parser/tflite/tflite_util.h" -#include "ops/leaky_relu.h" #include "ops/fusion/prelu_fusion.h" #include "ops/fusion/activation.h" @@ -26,37 +25,27 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteReluParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Activation(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new ReLU failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_activation_type(mindspore::ActivationType::RELU); - return prim; + return prim.release(); } ops::PrimitiveC *TfliteRelu6Parser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Activation(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Relu6 failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_activation_type(mindspore::ActivationType::RELU6); - return prim; + return prim.release(); } ops::PrimitiveC *TfliteLeakyReluParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Activation(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new LeakyRelu failed"; - return nullptr; - } + auto prim = std::make_unique(); + + prim->set_activation_type(mindspore::ActivationType::LEAKY_RELU); MS_ASSERT(tflite_op != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsLeakyReluOptions(); @@ -66,61 +55,43 @@ ops::PrimitiveC *TfliteLeakyReluParser::Parse(const std::unique_ptrset_alpha(tflite_attr->alpha); - prim->set_activation_type(mindspore::ActivationType::LEAKY_RELU); - - return prim; + return prim.release(); } ops::PrimitiveC *TflitePReLUParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::PReLUFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new PReLUFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_channel_shared(true); - return prim; + return prim.release(); } ops::PrimitiveC *TfliteTanhParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Activation(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Tanh failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_activation_type(mindspore::ActivationType::TANH); - return prim; + return prim.release(); } ops::PrimitiveC *TfliteHardSwishParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Activation(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new HardSwish failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_activation_type(mindspore::ActivationType::HSWISH); - return prim; + return prim.release(); } ops::PrimitiveC *TfliteLogisticParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Activation(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Sigmoid failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_activation_type(mindspore::ActivationType::SIGMOID); - return prim; + return prim.release(); } TfliteNodeRegister g_TfliteReluParser(tflite::BuiltinOperator_RELU, new TfliteReluParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_addn_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_addn_parser.cc index d6b439d076..72a5a1d4dc 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_addn_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_addn_parser.cc @@ -24,13 +24,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteAddNParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::AddN(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new AddN failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } TfliteNodeRegister g_tfliteAddNParser(tflite::BuiltinOperator_ADD_N, new TfliteAddNParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_argmax_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_argmax_parser.cc index 93e86af896..f8d240c4b8 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_argmax_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_argmax_parser.cc @@ -24,11 +24,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteArgmaxParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::ArgMaxFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new ArgMaxFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_keep_dims(false); prim->set_out_max_value(false); @@ -58,7 +54,7 @@ ops::PrimitiveC *TfliteArgmaxParser::Parse(const std::unique_ptrset_axis(*(static_cast(static_cast(data_ptr)))); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteArgmaxParser(tflite::BuiltinOperator_ARG_MAX, new TfliteArgmaxParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_argmin_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_argmin_parser.cc index a13d95d99b..55a7dcc066 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_argmin_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_argmin_parser.cc @@ -24,11 +24,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteArgminParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::ArgMinFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new ArgMinFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_keep_dims(false); prim->set_out_max_value(false); @@ -58,7 +54,7 @@ ops::PrimitiveC *TfliteArgminParser::Parse(const std::unique_ptrset_axis(*(static_cast(static_cast(data_ptr)))); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteArgminParser(tflite::BuiltinOperator_ARG_MIN, new TfliteArgminParser()); 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 e5e4054c9b..1ff24bb3b5 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_arithmetic_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_arithmetic_parser.cc @@ -50,11 +50,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteAddParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::AddFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new AddFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsAddOptions(); @@ -64,16 +60,12 @@ ops::PrimitiveC *TfliteAddParser::Parse(const std::unique_ptr } prim->set_activation_type(GetActivationFunctionType(tflite_attr->fused_activation_function)); - return prim; + return prim.release(); } ops::PrimitiveC *TfliteMulParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::MulFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new MulFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsMulOptions(); @@ -83,16 +75,12 @@ ops::PrimitiveC *TfliteMulParser::Parse(const std::unique_ptr } prim->set_activation_type(GetActivationFunctionType(tflite_attr->fused_activation_function)); - return prim; + return prim.release(); } ops::PrimitiveC *TfliteDivParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::DivFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new DivFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsDivOptions(); @@ -102,16 +90,12 @@ ops::PrimitiveC *TfliteDivParser::Parse(const std::unique_ptr } prim->set_activation_type(GetActivationFunctionType(tflite_attr->fused_activation_function)); - return prim; + return prim.release(); } ops::PrimitiveC *TfliteSubParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::SubFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new SubFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsSubOptions(); @@ -121,278 +105,160 @@ ops::PrimitiveC *TfliteSubParser::Parse(const std::unique_ptr } prim->set_activation_type(GetActivationFunctionType(tflite_attr->fused_activation_function)); - return prim; + return prim.release(); } ops::PrimitiveC *TfliteFloorDivParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::FloorDiv(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new FloorDiv failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteFloorModParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::FloorMod(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new FloorMod failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TflitePowParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::PowFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new PowFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_scale(1.0); prim->set_shift(0.0); - return prim; + return prim.release(); } ops::PrimitiveC *TfliteSquaredDifferenceParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::SquaredDifference(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new SquaredDifference failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteMaximumParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Maximum(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Maximum failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteMinimumParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Minimum(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Minimum failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteAbsParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Abs(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Abs failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteCosParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Cos(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Cos failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteFloorParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Floor(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Floor failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteExpParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::ExpFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new ExpFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_base(-1.0); prim->set_scale(1.0); prim->set_shift(0.0); - return prim; + return prim.release(); } ops::PrimitiveC *TfliteCeilParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Ceil(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Ceil failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteLogParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Log(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Log failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteRoundParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Round(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Round failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteSqrtParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Sqrt(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Sqrt failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteRsqrtParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Rsqrt(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Rsqrt failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteSquareParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Square(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Square failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteSinParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Sin(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Sin failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteNegParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Neg(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Neg failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteEqualParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Equal(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Equal failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteNotEqualParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::NotEqual(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new NotEqual failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteGreaterParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Greater(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Greater failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteGreaterEqualParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::GreaterEqual(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new GreaterEqual failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteLessParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Less(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Less failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteLessEqualParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::LessEqual(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new LessEqual failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } TfliteNodeRegister g_tfliteAddParser(tflite::BuiltinOperator_ADD, new TfliteAddParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_batch_to_space_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_batch_to_space_parser.cc index b0bf239896..a447316570 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_batch_to_space_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_batch_to_space_parser.cc @@ -25,11 +25,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteBatchToSpaceParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::BatchToSpace(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new BatchToSpace failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); MS_ASSERT(tflite_model != nullptr); @@ -52,7 +48,7 @@ ops::PrimitiveC *TfliteBatchToSpaceParser::Parse(const std::unique_ptrset_crops(crops); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteBatchToSpaceNDParser(tflite::BuiltinOperator_BATCH_TO_SPACE_ND, diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_broadcast_to_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_broadcast_to_parser.cc index dcd4e262f9..41bd5dd4fb 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_broadcast_to_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_broadcast_to_parser.cc @@ -24,11 +24,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteBroadcastToParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::BroadcastTo(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new BroadcastTo failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); MS_ASSERT(tflite_model != nullptr); @@ -44,7 +40,7 @@ ops::PrimitiveC *TfliteBroadcastToParser::Parse(const std::unique_ptrset_shape(dst_shape); - return prim; + return prim.release(); } } // namespace lite diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_cast_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_cast_parser.cc index bea2fb6403..4d9debf9fc 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_cast_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_cast_parser.cc @@ -23,11 +23,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteCastParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Cast(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Cast failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); MS_ASSERT(tflite_model != nullptr); @@ -44,7 +40,7 @@ ops::PrimitiveC *TfliteCastParser::Parse(const std::unique_ptrtype); prim->AddAttr("to", MakeValue(static_cast(dstT))); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteCastParser(tflite::BuiltinOperator_CAST, new TfliteCastParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_concat_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_concat_parser.cc index 82d33b6292..090d862b77 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_concat_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_concat_parser.cc @@ -23,11 +23,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteConcatParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Concat(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Concat failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsConcatenationOptions(); @@ -37,7 +33,7 @@ ops::PrimitiveC *TfliteConcatParser::Parse(const std::unique_ptrset_axis(tflite_attr->axis); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteConcatParser(tflite::BuiltinOperator_CONCATENATION, new TfliteConcatParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_conv_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_conv_parser.cc index 0125d28a95..73abc7d6c8 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_conv_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_conv_parser.cc @@ -23,11 +23,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteConvParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Conv2DFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Conv2DFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_pad({0, 0, 0, 0}); prim->set_group(1); @@ -74,12 +70,12 @@ ops::PrimitiveC *TfliteConvParser::Parse(const std::unique_ptrset_pad_list(params); } - return prim; + return prim.release(); } ops::PrimitiveC *TfliteDepthwiseConv2DParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Conv2DFusion(); + auto prim = std::make_unique(); if (prim == nullptr) { MS_LOG(ERROR) << "new Conv2DFusion failed"; return nullptr; @@ -138,7 +134,7 @@ ops::PrimitiveC *TfliteDepthwiseConv2DParser::Parse(const std::unique_ptrAddAttr(ops::kIsDepthWise, MakeValue(true)); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteConv2DParser(tflite::BuiltinOperator_CONV_2D, new TfliteConvParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_conv_transpose_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_conv_transpose_parser.cc index 1a99858357..71525dc79e 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_conv_transpose_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_conv_transpose_parser.cc @@ -23,11 +23,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteDeConvParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Conv2dTransposeFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Conv2dTransposeFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_pad({0, 0, 0, 0}); prim->set_group(1); @@ -74,7 +70,7 @@ ops::PrimitiveC *TfliteDeConvParser::Parse(const std::unique_ptrset_pad_list(params); } - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteDeConv2DParser(tflite::BuiltinOperator_TRANSPOSE_CONV, new TfliteDeConvParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_custom_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_custom_parser.cc index 10469adcbe..67f03a21a3 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_custom_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_custom_parser.cc @@ -70,11 +70,7 @@ ops::PrimitiveC *TfliteCustomParser::Parse(const std::unique_ptr &custom_attr, const std::unique_ptr &tflite_op) { - auto prim = new (std::nothrow) ops::DetectionPostProcess(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new DetectionPostProcess failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_format(mindspore::Format::NHWC); prim->set_input_size(tflite_op->inputs.size()); @@ -103,30 +99,22 @@ ops::PrimitiveC *TfliteCustomParser::DetectPostProcess(const std::vectorset_out_quantized(attr_map["_output_quantized"].AsBool()); } - return prim; + return prim.release(); } ops::PrimitiveC *TfliteCustomParser::AudioSpectrogram(const std::vector &custom_attr) { - auto prim = new (std::nothrow) ops::AudioSpectrogram(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new AudioSpectrogram failed"; - return nullptr; - } + auto prim = std::make_unique(); auto attr_map = flexbuffers::GetRoot(custom_attr).AsMap(); prim->set_window_size(attr_map["window_size"].AsInt64()); prim->set_stride(attr_map["stride"].AsInt64()); prim->set_mag_square(attr_map["magnitude_squared"].AsBool()); - return prim; + return prim.release(); } ops::PrimitiveC *TfliteCustomParser::Mfcc(const std::vector &custom_attr) { - auto prim = new (std::nothrow) ops::Mfcc(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Mfcc failed"; - return nullptr; - } + auto prim = std::make_unique(); auto attr_map = flexbuffers::GetRoot(custom_attr).AsMap(); prim->set_freq_upper_limit(attr_map["upper_frequency_limit"].AsFloat()); @@ -134,50 +122,32 @@ ops::PrimitiveC *TfliteCustomParser::Mfcc(const std::vector &custom_att prim->set_filter_bank_channel_num(attr_map["filterbank_channel_count"].AsInt64()); prim->set_dct_coeff_num(attr_map["dct_coefficient_count"].AsInt64()); - return prim; + return prim.release(); } ops::PrimitiveC *TfliteCustomParser::Predict(const std::vector &custom_attr) { - auto prim = new (std::nothrow) ops::CustomPredict(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new CustomPredict failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_output_num(reinterpret_cast(custom_attr.data())[0]); prim->set_weight_threshold(reinterpret_cast(custom_attr.data())[1]); - return prim; + return prim.release(); } ops::PrimitiveC *TfliteCustomParser::Normalize() { - auto prim = new (std::nothrow) ops::CustomNormalize(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new CustomNormalize failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteCustomParser::ExtractFeatures() { - auto prim = new (std::nothrow) ops::CustomExtractFeatures(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new CustomExtractFeatures failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteCustomParser::Rfft(const std::vector &custom_attr, const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Rfft(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Rfft failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); MS_ASSERT(tflite_model != nullptr); @@ -193,37 +163,22 @@ ops::PrimitiveC *TfliteCustomParser::Rfft(const std::vector &custom_att } prim->set_fft_length(fft_length[0]); - return prim; + return prim.release(); } ops::PrimitiveC *TfliteCustomParser::FftReal() { - auto prim = new (std::nothrow) ops::FftReal(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new FftReal failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteCustomParser::FftImag() { - auto prim = new (std::nothrow) ops::FftImag(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new FftImag failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteCustomParser::Identity() { - auto prim = new (std::nothrow) ops::Identity(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Identity failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } TfliteNodeRegister g_tfliteCustomParser(tflite::BuiltinOperator_CUSTOM, new TfliteCustomParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_depth_to_space_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_depth_to_space_parser.cc index 0be1474580..0534c33e1d 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_depth_to_space_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_depth_to_space_parser.cc @@ -24,11 +24,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteDepthToSpaceParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::DepthToSpace(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new DepthToSpace failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_format(mindspore::Format::NHWC); @@ -40,7 +36,7 @@ ops::PrimitiveC *TfliteDepthToSpaceParser::Parse(const std::unique_ptrset_block_size(tflite_attr->block_size); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteDepthToSpaceParser(tflite::BuiltinOperator_DEPTH_TO_SPACE, new TfliteDepthToSpaceParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_dequantize_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_dequantize_parser.cc index d0d325b00e..e9876cf40d 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_dequantize_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_dequantize_parser.cc @@ -40,27 +40,15 @@ ops::PrimitiveC *TfliteDequantizeParser::Parse(const std::unique_ptrtype) == kNumberTypeInt8 || GetTfliteDataType(in_tensor->type) == kNumberTypeUInt8)) { - auto prim = new (std::nothrow) ops::QuantDTypeCast(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Cast failed"; - return nullptr; - } - + auto prim = std::make_unique(); prim->set_src_t(GetTfliteDataType(in_tensor->type)); prim->set_dst_t(GetTfliteDataType(out_tensor->type)); - - return prim; + return prim.release(); } else { - auto prim = new (std::nothrow) ops::Cast(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Cast failed"; - return nullptr; - } - + auto prim = std::make_unique(); auto dstT = GetTfliteDataType(out_tensor->type); prim->AddAttr("to", MakeValue(static_cast(dstT))); - - return prim; + return prim.release(); } } diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_expand_dims_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_expand_dims_parser.cc index 7cf60588d4..701f21cf7a 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_expand_dims_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_expand_dims_parser.cc @@ -23,13 +23,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteExpandDimsParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::ExpandDims(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new ExpandDims failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } TfliteNodeRegister g_tfliteExpandDimsParser(tflite::BuiltinOperator_EXPAND_DIMS, new TfliteExpandDimsParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_fill_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_fill_parser.cc index 4dfda8d605..4631db572c 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_fill_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_fill_parser.cc @@ -23,13 +23,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteFillParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Fill(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Fill failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } TfliteNodeRegister g_tfliteFillParser(tflite::BuiltinOperator_FILL, new TfliteFillParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_fullyconnected_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_fullyconnected_parser.cc index b835529ebf..79ff5cfbc9 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_fullyconnected_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_fullyconnected_parser.cc @@ -23,11 +23,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteFullyConnectedParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::FullConnection(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new FullConnection failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_axis(1); prim->set_use_axis(false); @@ -41,7 +37,7 @@ ops::PrimitiveC *TfliteFullyConnectedParser::Parse(const std::unique_ptrset_activation_type(GetActivationFunctionType(tflite_attr->fused_activation_function)); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteFullyConnectedParser(tflite::BuiltinOperator_FULLY_CONNECTED, diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_gather_nd_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_gather_nd_parser.cc index 5caf57ba37..4d0a71c741 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_gather_nd_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_gather_nd_parser.cc @@ -24,13 +24,8 @@ namespace lite { ops::PrimitiveC *TfliteGatherNdParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::GatherNd(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new GatherNd failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } TfliteNodeRegister g_tfliteGatherNdParser(tflite::BuiltinOperator_GATHER_ND, new TfliteGatherNdParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_gather_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_gather_parser.cc index 8ce06ef0f9..7533c4dce0 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_gather_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_gather_parser.cc @@ -23,11 +23,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteGatherParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Gather(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Gather failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tfliteOp != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsGatherOptions(); @@ -37,7 +33,7 @@ ops::PrimitiveC *TfliteGatherParser::Parse(const std::unique_ptrAddAttr("axis", MakeValue(static_cast(tflite_attr->axis))); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteGatherParser(tflite::BuiltinOperator_GATHER, new TfliteGatherParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_hashtable_lookup_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_hashtable_lookup_parser.cc index 1d0a358ef1..a9320d1f99 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_hashtable_lookup_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_hashtable_lookup_parser.cc @@ -23,13 +23,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteHashtableLookupParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::HashtableLookup(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new HashtableLookup failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } TfliteNodeRegister g_tfliteHashtableLookupParser(tflite::BuiltinOperator_HASHTABLE_LOOKUP, diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_l2norm_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_l2norm_parser.cc index 47239bfdc0..2b5019e67e 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_l2norm_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_l2norm_parser.cc @@ -24,11 +24,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteL2NormParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::L2NormalizeFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new L2NormalizeFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_axis({-1}); prim->set_epsilon(1e-6); @@ -41,7 +37,7 @@ ops::PrimitiveC *TfliteL2NormParser::Parse(const std::unique_ptrset_activation_type(GetActivationFunctionType(tflite_attr->fused_activation_function)); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteL2NormParser(tflite::BuiltinOperator_L2_NORMALIZATION, new TfliteL2NormParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_logical_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_logical_parser.cc index 1751b19c51..9591fc42d4 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_logical_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_logical_parser.cc @@ -26,35 +26,20 @@ namespace lite { ops::PrimitiveC *TfliteLogicalAndParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::LogicalAnd(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new LogicalAnd failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteLogicalNotParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::LogicalNot(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new LogicalNot failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } ops::PrimitiveC *TfliteLogicalOrParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::LogicalOr(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new LogicalOr failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } TfliteNodeRegister g_tfliteLogicalAndParser(tflite::BuiltinOperator_LOGICAL_AND, new TfliteLogicalAndParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_lrn_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_lrn_parser.cc index 14d1e7b30d..44f802d4b1 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_lrn_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_lrn_parser.cc @@ -23,11 +23,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteLRNParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Lrn(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Lrn failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsLocalResponseNormalizationOptions(); @@ -40,7 +36,7 @@ ops::PrimitiveC *TfliteLRNParser::Parse(const std::unique_ptr prim->set_beta(tflite_attr->beta); prim->set_bias(tflite_attr->bias); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteLRNParser(tflite::BuiltinOperator_LOCAL_RESPONSE_NORMALIZATION, new TfliteLRNParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_lsh_projection_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_lsh_projection_parser.cc index 4545461598..9b5f64085a 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_lsh_projection_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_lsh_projection_parser.cc @@ -23,11 +23,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteLshProjectionParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::LshProjection(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new LshProjection failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsLSHProjectionOptions(); @@ -46,7 +42,7 @@ ops::PrimitiveC *TfliteLshProjectionParser::Parse(const std::unique_ptrset_type(mindspore::LshProjectionType::UNKNOWN); } - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteLshProjectionParser(tflite::BuiltinOperator_LSH_PROJECTION, new TfliteLshProjectionParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_matmul_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_matmul_parser.cc index add0ef8226..5bffe4b7b4 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_matmul_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_matmul_parser.cc @@ -24,11 +24,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteMatMulParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::MatMul(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new MatMul failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsBatchMatMulOptions(); @@ -39,7 +35,7 @@ ops::PrimitiveC *TfliteMatMulParser::Parse(const std::unique_ptrset_transpose_a(tflite_attr->adj_x); prim->set_transpose_b(tflite_attr->adj_y); - return prim; + return prim.release(); } } // namespace lite diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_model_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_model_parser.cc index 272fdbb939..be76263d2b 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_model_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_model_parser.cc @@ -236,19 +236,19 @@ STATUS TfliteModelParser::SetTensorQuantParam(const tflite::TensorT *tflite_tens return RET_OK; } -STATUS TfliteModelParser::ConvertOpQuantParams(const tflite::OperatorT *op, ops::PrimitiveC *primitive_c) { +STATUS TfliteModelParser::ConvertOpQuantParams(const tflite::OperatorT *op, ops::PrimitiveC *prim) { if (op == nullptr) { MS_LOG(ERROR) << "tflite op is null, get quant params failed."; return RET_NULL_PTR; } - if (primitive_c == nullptr) { - MS_LOG(ERROR) << "primitive_c is null, get quant params failed."; + if (prim == nullptr) { + MS_LOG(ERROR) << "prim is null, get quant params failed."; return RET_NULL_PTR; } int round_type = 1; - if (primitive_c->name() == "Conv2D" || primitive_c->name() == "Conv2DFusion") { + if (prim->name() == "Conv2D" || prim->name() == "Conv2DFusion") { round_type = 2; } const auto &tflite_subgraph = tflite_model_->subgraphs.front(); @@ -279,7 +279,7 @@ STATUS TfliteModelParser::ConvertOpQuantParams(const tflite::OperatorT *op, ops: } quant_params_holder->AddOutputQuantParam(quant_params); } - primitive_c->AddAttr("quant_params", quant_params_holder); + prim->AddAttr("quant_params", quant_params_holder); return RET_OK; } diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_model_parser.h b/mindspore/lite/tools/converter/parser/tflite/tflite_model_parser.h index 1d800b3489..44d52367cb 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_model_parser.h +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_model_parser.h @@ -43,7 +43,7 @@ class TfliteModelParser : public ModelParser { std::unique_ptr ReadTfliteModel(const char *model_path); STATUS ConvertConstTensor(const tflite::TensorT *tensor, Parameter *parameter, const std::string &tensor_name); STATUS ConvertOutputTensor(const tflite::OperatorT *op, const CNodePtr &dst_cnode); - STATUS ConvertOpQuantParams(const tflite::OperatorT *op, ops::PrimitiveC *primitive_c); + STATUS ConvertOpQuantParams(const tflite::OperatorT *op, ops::PrimitiveC *prim); STATUS ConvertOps(); STATUS ConvertGraphInputs(); STATUS ConvertGraphOutputs(); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_one_hot_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_one_hot_parser.cc index 606abf7f17..8ec9db2f81 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_one_hot_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_one_hot_parser.cc @@ -23,11 +23,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteOneHotParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::OneHot(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new OneHot failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsOneHotOptions(); @@ -37,7 +33,7 @@ ops::PrimitiveC *TfliteOneHotParser::Parse(const std::unique_ptrset_axis(tflite_attr->axis); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteOneHotParser(tflite::BuiltinOperator_ONE_HOT, new TfliteOneHotParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_pad_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_pad_parser.cc index 071aaa3188..4b55debac4 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_pad_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_pad_parser.cc @@ -24,11 +24,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TflitePadParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::PadFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new PadFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); MS_ASSERT(tflite_model != nullptr); @@ -82,7 +78,7 @@ ops::PrimitiveC *TflitePadParser::Parse(const std::unique_ptr return nullptr; } - return prim; + return prim.release(); } TfliteNodeRegister g_tflitePadParser(tflite::BuiltinOperator_PAD, new TflitePadParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_pooling_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_pooling_parser.cc index 6939aa7d85..b44e31c8d3 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_pooling_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_pooling_parser.cc @@ -25,11 +25,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteAvgPoolParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::AvgPoolFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new AvgPoolFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_format(mindspore::Format::NHWC); prim->set_round_mode(mindspore::RoundMode::FLOOR); @@ -65,16 +61,12 @@ ops::PrimitiveC *TfliteAvgPoolParser::Parse(const std::unique_ptrset_pad(params); } - return prim; + return prim.release(); } ops::PrimitiveC *TfliteMaxPoolParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::MaxPoolFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new MaxPoolFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_format(mindspore::Format::NHWC); prim->set_round_mode(mindspore::RoundMode::FLOOR); @@ -110,7 +102,7 @@ ops::PrimitiveC *TfliteMaxPoolParser::Parse(const std::unique_ptrset_pad(params); } - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteMeanPoolingParser(tflite::BuiltinOperator_AVERAGE_POOL_2D, new TfliteAvgPoolParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_quantize_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_quantize_parser.cc index 5d98a7607c..87a232b59d 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_quantize_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_quantize_parser.cc @@ -44,25 +44,15 @@ ops::PrimitiveC *TfliteQuantizeParser::Parse(const std::unique_ptrtype); auto out_tensor_type = GetTfliteDataType(out_tensor->type); if (out_tensor_type == kNumberTypeInt8 || out_tensor_type == kNumberTypeUInt8) { - auto prim = new (std::nothrow) ops::QuantDTypeCast(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new QuantDTypeCast failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_src_t(in_tensor_type); prim->set_dst_t(out_tensor_type); - return prim; + return prim.release(); } else { - auto prim = new (std::nothrow) ops::Cast(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Cast failed"; - return nullptr; - } - + auto prim = std::make_unique(); auto dstT = GetTfliteDataType(out_tensor->type); prim->AddAttr("to", MakeValue(static_cast(dstT))); - - return prim; + return prim.release(); } } diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_range_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_range_parser.cc index e3b1ab9fa7..831ea9ed4d 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_range_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_range_parser.cc @@ -23,11 +23,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteRangeParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Range(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Range failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_d_type(0); @@ -57,7 +53,7 @@ ops::PrimitiveC *TfliteRangeParser::Parse(const std::unique_ptrset_delta(delta.front()); } - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteRangeParser(tflite::BuiltinOperator_RANGE, new TfliteRangeParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_rank_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_rank_parser.cc index a57b47a054..121527a217 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_rank_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_rank_parser.cc @@ -23,13 +23,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteRankParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Rank(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Rank failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } TfliteNodeRegister g_tfliteRankParser(tflite::BuiltinOperator_RANK, new TfliteRankParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_reduce_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_reduce_parser.cc index df7c4d522b..1865a50df7 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_reduce_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_reduce_parser.cc @@ -23,11 +23,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteReduceParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::ReduceFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new ReduceFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsReducerOptions(); @@ -53,7 +49,7 @@ ops::PrimitiveC *TfliteReduceParser::Parse(const std::unique_ptr &tfliteOp, const std::unique_ptr &tfliteModel) { - auto prim = new (std::nothrow) ops::Reshape(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Reshape failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tfliteOp != nullptr); MS_ASSERT(tfliteModel != nullptr); @@ -46,7 +42,7 @@ ops::PrimitiveC *TfliteReshapeParser::Parse(const std::unique_ptrAddAttr("shape", MakeValue(shape)); } - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteReshapeParser(tflite::BuiltinOperator_RESHAPE, new TfliteReshapeParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_resize_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_resize_parser.cc index 76c7f9d9ee..51a854ce46 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_resize_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_resize_parser.cc @@ -25,13 +25,19 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteResizeParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Resize(); + auto prim = std::make_unique(); + + prim->set_format(mindspore::Format::NHWC); + prim->set_preserve_aspect_ratio(false); + prim->set_coordinate_transform_mode(mindspore::CoordinateTransformMode::ASYMMETRIC); + + MS_ASSERT(tfliteOp != nullptr); + MS_ASSERT(tfliteModel != nullptr); auto &tflite_subgraph = tflite_model->subgraphs.front(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Resize failed"; + if (tflite_subgraph == nullptr) { + MS_LOG(ERROR) << "tflite_subgraph is nullptr"; return nullptr; } - prim->set_coordinate_transform_mode(mindspore::CoordinateTransformMode::ASYMMETRIC); auto tflite_op_type = (tflite_model->operator_codes[tflite_op->opcode_index])->builtin_code; if (tflite_op_type == tflite::BuiltinOperator_RESIZE_BILINEAR) { MS_LOG(DEBUG) << "parse TfliteResizeBilinearParser"; @@ -69,12 +75,8 @@ ops::PrimitiveC *TfliteResizeParser::Parse(const std::unique_ptrset_format(mindspore::Format::NHWC); - prim->set_preserve_aspect_ratio(false); - auto tfliteResizeTensorIndex = tflite_op->inputs[1]; const auto &shape_tensor = tflite_subgraph->tensors[tfliteResizeTensorIndex]; - if (shape_tensor == nullptr) { MS_LOG(ERROR) << "shape_tensor is null"; return nullptr; @@ -93,7 +95,7 @@ ops::PrimitiveC *TfliteResizeParser::Parse(const std::unique_ptrset_new_height(height); } - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteResizeBilinearParser(tflite::BuiltinOperator_RESIZE_BILINEAR, new TfliteResizeParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_reverse_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_reverse_parser.cc index 3d292ab8a7..c42fd90c62 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_reverse_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_reverse_parser.cc @@ -23,11 +23,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteReverseParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::ReverseV2(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new ReverseV2 failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); MS_ASSERT(tflite_model != nullptr); @@ -43,7 +39,7 @@ ops::PrimitiveC *TfliteReverseParser::Parse(const std::unique_ptrset_axis(axis); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteReverseParser(tflite::BuiltinOperator_REVERSE_V2, new TfliteReverseParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_reverse_sequence_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_reverse_sequence_parser.cc index 7a686b9300..150796ee56 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_reverse_sequence_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_reverse_sequence_parser.cc @@ -24,11 +24,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteReverseSequenceParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::ReverseSequence(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new ReverseSequence failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsReverseSequenceOptions(); @@ -39,7 +35,7 @@ ops::PrimitiveC *TfliteReverseSequenceParser::Parse(const std::unique_ptrset_seq_dim(tflite_attr->seq_dim); prim->set_batch_dim(tflite_attr->batch_dim); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteReverseSequenceParser(tflite::BuiltinOperator_REVERSE_SEQUENCE, diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_scatter_nd_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_scatter_nd_parser.cc index c3ff0512fe..678ba30d48 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_scatter_nd_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_scatter_nd_parser.cc @@ -23,13 +23,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteScatterNdParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::ScatterNd(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new ScatterNd failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } TfliteNodeRegister g_tfliteScatterNdParser(tflite::BuiltinOperator_SCATTER_ND, new TfliteScatterNdParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_shape_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_shape_parser.cc index 3ec8451029..38110e35e6 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_shape_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_shape_parser.cc @@ -23,13 +23,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteShapeParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Shape(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Shape failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } TfliteNodeRegister g_tfliteShapeParser(tflite::BuiltinOperator_SHAPE, new TfliteShapeParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_skip_gram_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_skip_gram_parser.cc index 8cf49101c2..a767941121 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_skip_gram_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_skip_gram_parser.cc @@ -23,11 +23,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteSkipGramParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::SkipGram(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new SkipGram failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsSkipGramOptions(); @@ -39,7 +35,7 @@ ops::PrimitiveC *TfliteSkipGramParser::Parse(const std::unique_ptrset_max_skip_size(tflite_attr->max_skip_size); prim->set_ngram_size(tflite_attr->ngram_size); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteSkiGramParser(tflite::BuiltinOperator_SKIP_GRAM, new TfliteSkipGramParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_slice_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_slice_parser.cc index 42d965aa30..a95f69deb8 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_slice_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_slice_parser.cc @@ -23,11 +23,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteSliceParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::SliceFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new SliceFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); MS_ASSERT(tflite_model != nullptr); @@ -47,7 +43,7 @@ ops::PrimitiveC *TfliteSliceParser::Parse(const std::unique_ptrset_axes(axes); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteSliceParser(tflite::BuiltinOperator_SLICE, new TfliteSliceParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_softmax_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_softmax_parser.cc index ba77e66b02..32bf3d7024 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_softmax_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_softmax_parser.cc @@ -23,15 +23,11 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteSoftmaxParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Softmax(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Softmax failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_axis({-1}); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteSoftmaxParser(tflite::BuiltinOperator_SOFTMAX, new TfliteSoftmaxParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_space_to_batch_nd_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_space_to_batch_nd_parser.cc index 5483909886..1f392bf5b4 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_space_to_batch_nd_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_space_to_batch_nd_parser.cc @@ -24,11 +24,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteSpaceToBatchNDParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::SpaceToBatchND(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new SpaceToBatch failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); MS_ASSERT(tflite_model != nullptr); @@ -50,7 +46,7 @@ ops::PrimitiveC *TfliteSpaceToBatchNDParser::Parse(const std::unique_ptrset_paddings(paddings); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteSpaceToBatchNDParser(tflite::BuiltinOperator_SPACE_TO_BATCH_ND, diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_space_to_depth_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_space_to_depth_parser.cc index 3fc16e0920..eff2d304fb 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_space_to_depth_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_space_to_depth_parser.cc @@ -24,11 +24,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteSpaceToDepthParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::SpaceToDepth(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new SpaceToDepth failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_format(mindspore::Format::NHWC); @@ -40,7 +36,7 @@ ops::PrimitiveC *TfliteSpaceToDepthParser::Parse(const std::unique_ptrset_block_size(tflite_attr->block_size); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteSpaceToDepthParser(tflite::BuiltinOperator_SPACE_TO_DEPTH, new TfliteSpaceToDepthParser()); 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 4a8efca124..4fb7fc8c3f 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 @@ -24,13 +24,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteSparseToDenseParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::SparseToDense(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new SparseToDense failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } TfliteNodeRegister g_tfliteSparseToDenseParser(tflite::BuiltinOperator_SPARSE_TO_DENSE, diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_split_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_split_parser.cc index 89d74d7689..5b9a93bda3 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_split_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_split_parser.cc @@ -24,11 +24,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteSplitParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Split(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Split failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); MS_ASSERT(tflite_model != nullptr); @@ -85,7 +81,7 @@ ops::PrimitiveC *TfliteSplitParser::Parse(const std::unique_ptrset_size_splits(size_splits); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteSplitParser(tflite::BuiltinOperator_SPLIT, new TfliteSplitParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_split_v_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_split_v_parser.cc index 57e207e282..98cb137648 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_split_v_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_split_v_parser.cc @@ -24,11 +24,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteSplitVParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Split(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Split failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); MS_ASSERT(tflite_model != nullptr); @@ -77,7 +73,7 @@ ops::PrimitiveC *TfliteSplitVParser::Parse(const std::unique_ptrset_axis(static_cast(axis)); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteSplitVParser(tflite::BuiltinOperator_SPLIT_V, new TfliteSplitVParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_squeeze_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_squeeze_parser.cc index ac1f92279b..18dada76df 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_squeeze_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_squeeze_parser.cc @@ -24,11 +24,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteSqueezeParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Squeeze(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Squeeze failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsSqueezeOptions(); @@ -42,7 +38,7 @@ ops::PrimitiveC *TfliteSqueezeParser::Parse(const std::unique_ptr(value); }); prim->set_axis(dims_vector); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteSqueezeParser(tflite::BuiltinOperator_SQUEEZE, new TfliteSqueezeParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_stack_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_stack_parser.cc index da6534fe48..9f175a0012 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_stack_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_stack_parser.cc @@ -23,11 +23,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteStackParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Stack(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Stack failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); MS_ASSERT(tflite_model != nullptr); @@ -44,7 +40,7 @@ ops::PrimitiveC *TfliteStackParser::Parse(const std::unique_ptrset_axis({tflite_attr->axis}); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteStackParser(tflite::BuiltinOperator_PACK, new TfliteStackParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_strided_slice_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_strided_slice_parser.cc index a4ff1a910e..ad26e09802 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_strided_slice_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_strided_slice_parser.cc @@ -23,11 +23,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteStridedSliceParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::StridedSlice(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new StridedSlice failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsStridedSliceOptions(); @@ -41,7 +37,7 @@ ops::PrimitiveC *TfliteStridedSliceParser::Parse(const std::unique_ptrset_new_axis_mask(tflite_attr->new_axis_mask); prim->set_shrink_axis_mask(tflite_attr->shrink_axis_mask); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteStridedSliceParser(tflite::BuiltinOperator_STRIDED_SLICE, new TfliteStridedSliceParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_tile_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_tile_parser.cc index 3303bb273c..68ab204faf 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_tile_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_tile_parser.cc @@ -24,13 +24,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteTileParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::TileFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new TileFusion failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } TfliteNodeRegister g_tfliteTileParser(tflite::BuiltinOperator_TILE, new TfliteTileParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_topk_v2_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_topk_v2_parser.cc index ea2ae93fe0..98a560b51c 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_topk_v2_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_topk_v2_parser.cc @@ -24,15 +24,11 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteTopKV2Parser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::TopKFusion(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new TopKFusion failed"; - return nullptr; - } + auto prim = std::make_unique(); prim->set_sorted(true); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteTopKV2Parser(tflite::BuiltinOperator_TOPK_V2, new TfliteTopKV2Parser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_transpose_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_transpose_parser.cc index c1a4bf61cb..5589dca5ec 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_transpose_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_transpose_parser.cc @@ -23,13 +23,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteTransposeParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Transpose(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Transpose failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } TfliteNodeRegister g_tfliteTransposeParser(tflite::BuiltinOperator_TRANSPOSE, new TfliteTransposeParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_unique_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_unique_parser.cc index 99e88e65dd..2c501e3a92 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_unique_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_unique_parser.cc @@ -24,13 +24,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteUniqueParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Unique(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Unique failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } TfliteNodeRegister g_tfliteUniqueParser(tflite::BuiltinOperator_UNIQUE, new TfliteUniqueParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_unstack_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_unstack_parser.cc index 06f0d49286..ed25a35b8f 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_unstack_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_unstack_parser.cc @@ -24,11 +24,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteUnstackParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Unpack(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Unpack failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsUnpackOptions(); @@ -38,7 +34,7 @@ ops::PrimitiveC *TfliteUnstackParser::Parse(const std::unique_ptrset_axis(tflite_attr->axis); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteUnstackParser(tflite::BuiltinOperator_UNPACK, new TfliteUnstackParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_where_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_where_parser.cc index 7f2028b531..37565db6e5 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_where_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_where_parser.cc @@ -24,13 +24,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteWhereParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::Where(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new Where failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } TfliteNodeRegister g_tfliteWhereParser(tflite::BuiltinOperator_WHERE, new TfliteWhereParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_while_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_while_parser.cc index f29881314c..2cff2d4fda 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_while_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_while_parser.cc @@ -24,11 +24,7 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteWhileParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::While(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new While failed"; - return nullptr; - } + auto prim = std::make_unique(); MS_ASSERT(tflite_op != nullptr); const auto &tflite_attr = tflite_op->builtin_options.AsWhileOptions(); @@ -39,7 +35,7 @@ ops::PrimitiveC *TfliteWhileParser::Parse(const std::unique_ptrset_cond_subgraph_index(tflite_attr->cond_subgraph_index); prim->set_body_subgraph_index(tflite_attr->body_subgraph_index); - return prim; + return prim.release(); } TfliteNodeRegister g_tfliteWhileParser(tflite::BuiltinOperator_WHILE, new TfliteWhileParser()); diff --git a/mindspore/lite/tools/converter/parser/tflite/tflite_zeros_like_parser.cc b/mindspore/lite/tools/converter/parser/tflite/tflite_zeros_like_parser.cc index d784dc0439..11d5674ab3 100644 --- a/mindspore/lite/tools/converter/parser/tflite/tflite_zeros_like_parser.cc +++ b/mindspore/lite/tools/converter/parser/tflite/tflite_zeros_like_parser.cc @@ -24,13 +24,8 @@ namespace mindspore { namespace lite { ops::PrimitiveC *TfliteZerosLikeParser::Parse(const std::unique_ptr &tflite_op, const std::unique_ptr &tflite_model) { - auto prim = new (std::nothrow) ops::ZerosLike(); - if (prim == nullptr) { - MS_LOG(ERROR) << "new ZerosLike failed"; - return nullptr; - } - - return prim; + auto prim = std::make_unique(); + return prim.release(); } TfliteNodeRegister g_tfliteZerosLikeParser(tflite::BuiltinOperator_ZEROS_LIKE, new TfliteZerosLikeParser());