Merge pull request !4640 from lyvette/parsertags/v0.7.0-beta
| @@ -27,6 +27,7 @@ class TestTfliteParserL2Norm : public TestTfliteParser { | |||||
| TEST_F(TestTfliteParserL2Norm, OpType) { | TEST_F(TestTfliteParserL2Norm, OpType) { | ||||
| ASSERT_NE(meta_graph, nullptr); | ASSERT_NE(meta_graph, nullptr); | ||||
| ASSERT_GT(meta_graph->nodes.size(), 0); | ASSERT_GT(meta_graph->nodes.size(), 0); | ||||
| ASSERT_NE(meta_graph->nodes.front()->primitive.get(), nullptr); | |||||
| ASSERT_EQ(meta_graph->nodes.front()->primitive->value.type, schema::PrimitiveType_L2Norm) << "wrong Op Type"; | ASSERT_EQ(meta_graph->nodes.front()->primitive->value.type, schema::PrimitiveType_L2Norm) << "wrong Op Type"; | ||||
| } | } | ||||
| @@ -38,7 +38,7 @@ STATUS TfliteActivationParser::Parse(const std::unique_ptr<tflite::OperatorT> &t | |||||
| MS_LOG(ERROR) << "op->primitive is null"; | MS_LOG(ERROR) << "op->primitive is null"; | ||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::ActivationT> attr(new schema::ActivationT()); | |||||
| std::unique_ptr<schema::ActivationT> attr = std::make_unique<schema::ActivationT>(); | |||||
| std::vector<std::string> node_name_str; | std::vector<std::string> node_name_str; | ||||
| Split(op->name, &node_name_str, "-"); | Split(op->name, &node_name_str, "-"); | ||||
| @@ -89,7 +89,7 @@ STATUS TflitePreluParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflite | |||||
| MS_LOG(ERROR) << "op->primitive is null"; | MS_LOG(ERROR) << "op->primitive is null"; | ||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::PreluT> attr(new schema::PreluT()); | |||||
| std::unique_ptr<schema::PreluT> attr = std::make_unique<schema::PreluT>(); | |||||
| if (GetTfliteData(tflite_op->inputs[1], tflite_tensors, tflite_model_buffer, attr->slope)) { | if (GetTfliteData(tflite_op->inputs[1], tflite_tensors, tflite_model_buffer, attr->slope)) { | ||||
| MS_LOG(ERROR) << "get pRelu -> slope failed"; | MS_LOG(ERROR) << "get pRelu -> slope failed"; | ||||
| @@ -124,7 +124,7 @@ STATUS TfliteLeakyReluParser::Parse(const std::unique_ptr<tflite::OperatorT> &tf | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::LeakyReLUT> attr(new schema::LeakyReLUT()); | |||||
| std::unique_ptr<schema::LeakyReLUT> attr = std::make_unique<schema::LeakyReLUT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsLeakyReluOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsLeakyReluOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| @@ -42,7 +42,7 @@ STATUS TfliteAddNParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflite_ | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::AddNT> attr(new schema::AddNT()); | |||||
| std::unique_ptr<schema::AddNT> attr = std::make_unique<schema::AddNT>(); | |||||
| attr->N = tflite_tensors.size() - 1; | attr->N = tflite_tensors.size() - 1; | ||||
| op->primitive->value.type = schema::PrimitiveType_AddN; | op->primitive->value.type = schema::PrimitiveType_AddN; | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteArgmaxParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflit | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::ArgMaxT> attr(new schema::ArgMaxT()); | |||||
| std::unique_ptr<schema::ArgMaxT> attr = std::make_unique<schema::ArgMaxT>(); | |||||
| attr->outMaxValue = false; | attr->outMaxValue = false; | ||||
| attr->topK = 1; | attr->topK = 1; | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteArgminParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflit | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::ArgMinT> attr(new schema::ArgMinT()); | |||||
| std::unique_ptr<schema::ArgMinT> attr = std::make_unique<schema::ArgMinT>(); | |||||
| attr->outMaxValue = false; | attr->outMaxValue = false; | ||||
| attr->topK = 1; | attr->topK = 1; | ||||
| @@ -44,7 +44,7 @@ STATUS TfliteDoubleInputOpParser::Parse(const std::unique_ptr<tflite::OperatorT> | |||||
| const char *node_name = node_name_str.data()->c_str(); | const char *node_name = node_name_str.data()->c_str(); | ||||
| if (std::strcmp(node_name, "Add") == 0) { | if (std::strcmp(node_name, "Add") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteAddParser"; | MS_LOG(DEBUG) << "parse TfliteAddParser"; | ||||
| std::unique_ptr<schema::AddT> attr(new schema::AddT()); | |||||
| std::unique_ptr<schema::AddT> attr = std::make_unique<schema::AddT>(); | |||||
| const auto &tfliteAttr = tflite_op->builtin_options.AsAddOptions(); | const auto &tfliteAttr = tflite_op->builtin_options.AsAddOptions(); | ||||
| if (nullptr == tfliteAttr) { | if (nullptr == tfliteAttr) { | ||||
| MS_LOG(ERROR) << "get op: " << op->name.c_str() << " attr failed"; | MS_LOG(ERROR) << "get op: " << op->name.c_str() << " attr failed"; | ||||
| @@ -55,7 +55,7 @@ STATUS TfliteDoubleInputOpParser::Parse(const std::unique_ptr<tflite::OperatorT> | |||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "Sub") == 0) { | } else if (std::strcmp(node_name, "Sub") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteSubParser"; | MS_LOG(DEBUG) << "parse TfliteSubParser"; | ||||
| std::unique_ptr<schema::SubT> attr(new schema::SubT()); | |||||
| std::unique_ptr<schema::SubT> attr = std::make_unique<schema::SubT>(); | |||||
| const auto &tfliteAttr = tflite_op->builtin_options.AsSubOptions(); | const auto &tfliteAttr = tflite_op->builtin_options.AsSubOptions(); | ||||
| if (nullptr == tfliteAttr) { | if (nullptr == tfliteAttr) { | ||||
| MS_LOG(ERROR) << "get op: " << op->name.c_str() << " attr failed"; | MS_LOG(ERROR) << "get op: " << op->name.c_str() << " attr failed"; | ||||
| @@ -66,7 +66,7 @@ STATUS TfliteDoubleInputOpParser::Parse(const std::unique_ptr<tflite::OperatorT> | |||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "Mul") == 0) { | } else if (std::strcmp(node_name, "Mul") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteMulParser"; | MS_LOG(DEBUG) << "parse TfliteMulParser"; | ||||
| std::unique_ptr<schema::MulT> attr(new schema::MulT()); | |||||
| std::unique_ptr<schema::MulT> attr = std::make_unique<schema::MulT>(); | |||||
| const auto &tfliteAttr = tflite_op->builtin_options.AsMulOptions(); | const auto &tfliteAttr = tflite_op->builtin_options.AsMulOptions(); | ||||
| if (nullptr == tfliteAttr) { | if (nullptr == tfliteAttr) { | ||||
| MS_LOG(ERROR) << "get op: " << op->name.c_str() << " attr failed"; | MS_LOG(ERROR) << "get op: " << op->name.c_str() << " attr failed"; | ||||
| @@ -77,7 +77,7 @@ STATUS TfliteDoubleInputOpParser::Parse(const std::unique_ptr<tflite::OperatorT> | |||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "Div") == 0) { | } else if (std::strcmp(node_name, "Div") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteDivParser"; | MS_LOG(DEBUG) << "parse TfliteDivParser"; | ||||
| std::unique_ptr<schema::DivT> attr(new schema::DivT()); | |||||
| std::unique_ptr<schema::DivT> attr = std::make_unique<schema::DivT>(); | |||||
| const auto &tfliteAttr = tflite_op->builtin_options.AsDivOptions(); | const auto &tfliteAttr = tflite_op->builtin_options.AsDivOptions(); | ||||
| if (nullptr == tfliteAttr) { | if (nullptr == tfliteAttr) { | ||||
| MS_LOG(ERROR) << "get op: " << op->name.c_str() << " attr failed"; | MS_LOG(ERROR) << "get op: " << op->name.c_str() << " attr failed"; | ||||
| @@ -88,27 +88,27 @@ STATUS TfliteDoubleInputOpParser::Parse(const std::unique_ptr<tflite::OperatorT> | |||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "FloorDiv") == 0) { | } else if (std::strcmp(node_name, "FloorDiv") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteFloorDivParser"; | MS_LOG(DEBUG) << "parse TfliteFloorDivParser"; | ||||
| std::unique_ptr<schema::FloorDivT> attr(new schema::FloorDivT()); | |||||
| std::unique_ptr<schema::FloorDivT> attr = std::make_unique<schema::FloorDivT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_FloorDiv; | op->primitive->value.type = schema::PrimitiveType_FloorDiv; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "FloorMod") == 0) { | } else if (std::strcmp(node_name, "FloorMod") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteFloorModParser"; | MS_LOG(DEBUG) << "parse TfliteFloorModParser"; | ||||
| std::unique_ptr<schema::FloorModT> attr(new schema::FloorModT()); | |||||
| std::unique_ptr<schema::FloorModT> attr = std::make_unique<schema::FloorModT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_FloorMod; | op->primitive->value.type = schema::PrimitiveType_FloorMod; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "RealDiv") == 0) { | } else if (std::strcmp(node_name, "RealDiv") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteRealDivParser"; | MS_LOG(DEBUG) << "parse TfliteRealDivParser"; | ||||
| std::unique_ptr<schema::RealDivT> attr(new schema::RealDivT()); | |||||
| std::unique_ptr<schema::RealDivT> attr = std::make_unique<schema::RealDivT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Div; | op->primitive->value.type = schema::PrimitiveType_Div; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "SquaredDifference") == 0) { | } else if (std::strcmp(node_name, "SquaredDifference") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteSquaredDifferenceParser"; | MS_LOG(DEBUG) << "parse TfliteSquaredDifferenceParser"; | ||||
| std::unique_ptr<schema::SquaredDifferenceT> attr(new schema::SquaredDifferenceT()); | |||||
| std::unique_ptr<schema::SquaredDifferenceT> attr = std::make_unique<schema::SquaredDifferenceT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_SquaredDifference; | op->primitive->value.type = schema::PrimitiveType_SquaredDifference; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "Pow") == 0) { | } else if (std::strcmp(node_name, "Pow") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TflitePowParser"; | MS_LOG(DEBUG) << "parse TflitePowParser"; | ||||
| std::unique_ptr<schema::PowerT> attr(new schema::PowerT()); | |||||
| std::unique_ptr<schema::PowerT> attr = std::make_unique<schema::PowerT>(); | |||||
| attr->power = 0.0f; | attr->power = 0.0f; | ||||
| attr->scale = 1.0f; | attr->scale = 1.0f; | ||||
| attr->shift = 0.0f; | attr->shift = 0.0f; | ||||
| @@ -116,12 +116,12 @@ STATUS TfliteDoubleInputOpParser::Parse(const std::unique_ptr<tflite::OperatorT> | |||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "Maximum") == 0) { | } else if (std::strcmp(node_name, "Maximum") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteMaximumParser"; | MS_LOG(DEBUG) << "parse TfliteMaximumParser"; | ||||
| std::unique_ptr<schema::MaximumT> attr(new schema::MaximumT()); | |||||
| std::unique_ptr<schema::MaximumT> attr = std::make_unique<schema::MaximumT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Maximum; | op->primitive->value.type = schema::PrimitiveType_Maximum; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "Minimum") == 0) { | } else if (std::strcmp(node_name, "Minimum") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteMinimumParser"; | MS_LOG(DEBUG) << "parse TfliteMinimumParser"; | ||||
| std::unique_ptr<schema::MinimumT> attr(new schema::MinimumT()); | |||||
| std::unique_ptr<schema::MinimumT> attr = std::make_unique<schema::MinimumT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Minimum; | op->primitive->value.type = schema::PrimitiveType_Minimum; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } | } | ||||
| @@ -158,57 +158,57 @@ STATUS TfliteSingleInputOpParser::Parse(const std::unique_ptr<tflite::OperatorT> | |||||
| const char *node_name = node_name_str.data()->c_str(); | const char *node_name = node_name_str.data()->c_str(); | ||||
| if (std::strcmp(node_name, "Abs") == 0) { | if (std::strcmp(node_name, "Abs") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteAbsParser"; | MS_LOG(DEBUG) << "parse TfliteAbsParser"; | ||||
| std::unique_ptr<schema::AbsT> attr(new schema::AbsT()); | |||||
| std::unique_ptr<schema::AbsT> attr = std::make_unique<schema::AbsT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Abs; | op->primitive->value.type = schema::PrimitiveType_Abs; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "Exp") == 0) { | } else if (std::strcmp(node_name, "Exp") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteExpParser"; | MS_LOG(DEBUG) << "parse TfliteExpParser"; | ||||
| std::unique_ptr<schema::ExpT> attr(new schema::ExpT()); | |||||
| std::unique_ptr<schema::ExpT> attr = std::make_unique<schema::ExpT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Exp; | op->primitive->value.type = schema::PrimitiveType_Exp; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "Sqrt") == 0) { | } else if (std::strcmp(node_name, "Sqrt") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteSqrtParser"; | MS_LOG(DEBUG) << "parse TfliteSqrtParser"; | ||||
| std::unique_ptr<schema::SqrtT> attr(new schema::SqrtT()); | |||||
| std::unique_ptr<schema::SqrtT> attr = std::make_unique<schema::SqrtT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Sqrt; | op->primitive->value.type = schema::PrimitiveType_Sqrt; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "Rsqrt") == 0) { | } else if (std::strcmp(node_name, "Rsqrt") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteRsqrtParser"; | MS_LOG(DEBUG) << "parse TfliteRsqrtParser"; | ||||
| std::unique_ptr<schema::RsqrtT> attr(new schema::RsqrtT()); | |||||
| std::unique_ptr<schema::RsqrtT> attr = std::make_unique<schema::RsqrtT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Rsqrt; | op->primitive->value.type = schema::PrimitiveType_Rsqrt; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "Square") == 0) { | } else if (std::strcmp(node_name, "Square") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteSquareParser"; | MS_LOG(DEBUG) << "parse TfliteSquareParser"; | ||||
| std::unique_ptr<schema::SquareT> attr(new schema::SquareT()); | |||||
| std::unique_ptr<schema::SquareT> attr = std::make_unique<schema::SquareT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Square; | op->primitive->value.type = schema::PrimitiveType_Square; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "Sin") == 0) { | } else if (std::strcmp(node_name, "Sin") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteSinParser"; | MS_LOG(DEBUG) << "parse TfliteSinParser"; | ||||
| std::unique_ptr<schema::SinT> attr(new schema::SinT()); | |||||
| std::unique_ptr<schema::SinT> attr = std::make_unique<schema::SinT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Sin; | op->primitive->value.type = schema::PrimitiveType_Sin; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "Cos") == 0) { | } else if (std::strcmp(node_name, "Cos") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteCosParser"; | MS_LOG(DEBUG) << "parse TfliteCosParser"; | ||||
| std::unique_ptr<schema::CosT> attr(new schema::CosT()); | |||||
| std::unique_ptr<schema::CosT> attr = std::make_unique<schema::CosT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Cos; | op->primitive->value.type = schema::PrimitiveType_Cos; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "Log") == 0) { | } else if (std::strcmp(node_name, "Log") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteLogParser"; | MS_LOG(DEBUG) << "parse TfliteLogParser"; | ||||
| std::unique_ptr<schema::LogT> attr(new schema::LogT()); | |||||
| std::unique_ptr<schema::LogT> attr = std::make_unique<schema::LogT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Log; | op->primitive->value.type = schema::PrimitiveType_Log; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "Round") == 0) { | } else if (std::strcmp(node_name, "Round") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteRoundParser"; | MS_LOG(DEBUG) << "parse TfliteRoundParser"; | ||||
| std::unique_ptr<schema::RoundT> attr(new schema::RoundT()); | |||||
| std::unique_ptr<schema::RoundT> attr = std::make_unique<schema::RoundT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Round; | op->primitive->value.type = schema::PrimitiveType_Round; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "Ceil") == 0) { | } else if (std::strcmp(node_name, "Ceil") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteCeilParser"; | MS_LOG(DEBUG) << "parse TfliteCeilParser"; | ||||
| std::unique_ptr<schema::CeilT> attr(new schema::CeilT()); | |||||
| std::unique_ptr<schema::CeilT> attr = std::make_unique<schema::CeilT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Ceil; | op->primitive->value.type = schema::PrimitiveType_Ceil; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "flOOR") == 0) { | } else if (std::strcmp(node_name, "flOOR") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteFloorParser"; | MS_LOG(DEBUG) << "parse TfliteFloorParser"; | ||||
| std::unique_ptr<schema::FloorT> attr(new schema::FloorT()); | |||||
| std::unique_ptr<schema::FloorT> attr = std::make_unique<schema::FloorT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Floor; | op->primitive->value.type = schema::PrimitiveType_Floor; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } | } | ||||
| @@ -242,32 +242,32 @@ STATUS TfliteCompareOpParser::Parse(const std::unique_ptr<tflite::OperatorT> &tf | |||||
| const char *node_name = node_name_str.data()->c_str(); | const char *node_name = node_name_str.data()->c_str(); | ||||
| if (std::strcmp(node_name, "Equal") == 0) { | if (std::strcmp(node_name, "Equal") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteEqualParser"; | MS_LOG(DEBUG) << "parse TfliteEqualParser"; | ||||
| std::unique_ptr<schema::EqualT> attr(new schema::EqualT()); | |||||
| std::unique_ptr<schema::EqualT> attr = std::make_unique<schema::EqualT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Equal; | op->primitive->value.type = schema::PrimitiveType_Equal; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "NotEqual") == 0) { | } else if (std::strcmp(node_name, "NotEqual") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteNotEqualParser"; | MS_LOG(DEBUG) << "parse TfliteNotEqualParser"; | ||||
| std::unique_ptr<schema::NotEqualT> attr(new schema::NotEqualT()); | |||||
| std::unique_ptr<schema::NotEqualT> attr = std::make_unique<schema::NotEqualT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_NotEqual; | op->primitive->value.type = schema::PrimitiveType_NotEqual; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "Greater") == 0) { | } else if (std::strcmp(node_name, "Greater") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteGreaterParser"; | MS_LOG(DEBUG) << "parse TfliteGreaterParser"; | ||||
| std::unique_ptr<schema::GreaterT> attr(new schema::GreaterT()); | |||||
| std::unique_ptr<schema::GreaterT> attr = std::make_unique<schema::GreaterT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Greater; | op->primitive->value.type = schema::PrimitiveType_Greater; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "GreaterEqual") == 0) { | } else if (std::strcmp(node_name, "GreaterEqual") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteGreaterEqualParser"; | MS_LOG(DEBUG) << "parse TfliteGreaterEqualParser"; | ||||
| std::unique_ptr<schema::GreaterEqualT> attr(new schema::GreaterEqualT()); | |||||
| std::unique_ptr<schema::GreaterEqualT> attr = std::make_unique<schema::GreaterEqualT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_GreaterEqual; | op->primitive->value.type = schema::PrimitiveType_GreaterEqual; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "Less") == 0) { | } else if (std::strcmp(node_name, "Less") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteLessParser"; | MS_LOG(DEBUG) << "parse TfliteLessParser"; | ||||
| std::unique_ptr<schema::LessT> attr(new schema::LessT()); | |||||
| std::unique_ptr<schema::LessT> attr = std::make_unique<schema::LessT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Less; | op->primitive->value.type = schema::PrimitiveType_Less; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "LessEqual") == 0) { | } else if (std::strcmp(node_name, "LessEqual") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteLessEqualParser"; | MS_LOG(DEBUG) << "parse TfliteLessEqualParser"; | ||||
| std::unique_ptr<schema::LessEqualT> attr(new schema::LessEqualT()); | |||||
| std::unique_ptr<schema::LessEqualT> attr = std::make_unique<schema::LessEqualT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_LessEqual; | op->primitive->value.type = schema::PrimitiveType_LessEqual; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } | } | ||||
| @@ -49,7 +49,7 @@ STATUS TfliteBatchToSpaceParser::Parse(const std::unique_ptr<tflite::OperatorT> | |||||
| MS_LOG(DEBUG) << "parse TfliteBatchToSpaceNDParser"; | MS_LOG(DEBUG) << "parse TfliteBatchToSpaceNDParser"; | ||||
| } | } | ||||
| std::unique_ptr<schema::BatchToSpaceT> attr(new schema::BatchToSpaceT()); | |||||
| std::unique_ptr<schema::BatchToSpaceT> attr = std::make_unique<schema::BatchToSpaceT>(); | |||||
| if (GetTfliteData(tflite_op->inputs[1], tflite_tensors, tflite_model_buffer, attr->blockShape)) { | if (GetTfliteData(tflite_op->inputs[1], tflite_tensors, tflite_model_buffer, attr->blockShape)) { | ||||
| MS_LOG(ERROR) << "get batchToSpace -> blockShape failed"; | MS_LOG(ERROR) << "get batchToSpace -> blockShape failed"; | ||||
| @@ -41,7 +41,7 @@ STATUS TfliteBroadcastToParser::Parse(const std::unique_ptr<tflite::OperatorT> & | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::BroadcastToT> attr(new schema::BroadcastToT()); | |||||
| std::unique_ptr<schema::BroadcastToT> attr = std::make_unique<schema::BroadcastToT>(); | |||||
| if (GetTfliteData(tflite_op->inputs[1], tflite_tensors, tflite_model_buffer, attr->dst_shape)) { | if (GetTfliteData(tflite_op->inputs[1], tflite_tensors, tflite_model_buffer, attr->dst_shape)) { | ||||
| MS_LOG(ERROR) << "get broadCastTo -> dst_shape failed"; | MS_LOG(ERROR) << "get broadCastTo -> dst_shape failed"; | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteCastParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflite_ | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::CastT> attr(new schema::CastT()); | |||||
| std::unique_ptr<schema::CastT> attr = std::make_unique<schema::CastT>(); | |||||
| const auto &in_tensor = tflite_tensors[tflite_op->inputs[0]]; | const auto &in_tensor = tflite_tensors[tflite_op->inputs[0]]; | ||||
| if (in_tensor == nullptr) { | if (in_tensor == nullptr) { | ||||
| @@ -41,7 +41,7 @@ STATUS TfliteConcatParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflit | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::ConcatT> attr(new schema::ConcatT()); | |||||
| std::unique_ptr<schema::ConcatT> attr = std::make_unique<schema::ConcatT>(); | |||||
| const auto &tfliteAttr = tflite_op->builtin_options.AsConcatenationOptions(); | const auto &tfliteAttr = tflite_op->builtin_options.AsConcatenationOptions(); | ||||
| if (tfliteAttr == nullptr) { | if (tfliteAttr == nullptr) { | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteConvParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflite_ | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::Conv2DT> attr(new schema::Conv2DT()); | |||||
| std::unique_ptr<schema::Conv2DT> attr = std::make_unique<schema::Conv2DT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsConv2DOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsConv2DOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| MS_LOG(ERROR) << "get op: " << op->name.c_str() << " attr failed"; | MS_LOG(ERROR) << "get op: " << op->name.c_str() << " attr failed"; | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteDeConvParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflit | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::DeConv2DT> attr(new schema::DeConv2DT()); | |||||
| std::unique_ptr<schema::DeConv2DT> attr = std::make_unique<schema::DeConv2DT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsTransposeConvOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsTransposeConvOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| MS_LOG(ERROR) << "get op: " << op->name.c_str() << " attr failed"; | MS_LOG(ERROR) << "get op: " << op->name.c_str() << " attr failed"; | ||||
| @@ -41,7 +41,7 @@ STATUS TfliteDepthToSpaceParser::Parse(const std::unique_ptr<tflite::OperatorT> | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::DepthToSpaceT> attr(new schema::DepthToSpaceT()); | |||||
| std::unique_ptr<schema::DepthToSpaceT> attr = std::make_unique<schema::DepthToSpaceT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsDepthToSpaceOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsDepthToSpaceOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| @@ -41,7 +41,7 @@ STATUS TfliteDepthwiseConv2DParser::Parse(const std::unique_ptr<tflite::Operator | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::DepthwiseConv2DT> attr(new schema::DepthwiseConv2DT()); | |||||
| std::unique_ptr<schema::DepthwiseConv2DT> attr = std::make_unique<schema::DepthwiseConv2DT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsDepthwiseConv2DOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsDepthwiseConv2DOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| MS_LOG(ERROR) << "get op: " << op->name.c_str() << " attr failed"; | MS_LOG(ERROR) << "get op: " << op->name.c_str() << " attr failed"; | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteDequantizeParser::Parse(const std::unique_ptr<tflite::OperatorT> &t | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::CastT> attr(new schema::CastT); | |||||
| std::unique_ptr<schema::CastT> attr = std::make_unique<schema::CastT>(); | |||||
| // get the dequantize input tensor | // get the dequantize input tensor | ||||
| const auto &in_tensor = tflite_tensors[tflite_op->inputs[0]]; | const auto &in_tensor = tflite_tensors[tflite_op->inputs[0]]; | ||||
| @@ -28,6 +28,8 @@ STATUS TfliteExpandDimsParser::Parse(const std::unique_ptr<tflite::OperatorT> &t | |||||
| std::vector<int32_t> *tensors_id, | std::vector<int32_t> *tensors_id, | ||||
| std::vector<schema::Format> *tensors_format, | std::vector<schema::Format> *tensors_format, | ||||
| std::map<int, int> *tensors_id_map) { | std::map<int, int> *tensors_id_map) { | ||||
| MS_LOG(DEBUG) << "parse TfliteExpandDimsParser"; | |||||
| if (op == nullptr) { | if (op == nullptr) { | ||||
| MS_LOG(ERROR) << "op is null"; | MS_LOG(ERROR) << "op is null"; | ||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| @@ -38,8 +40,7 @@ STATUS TfliteExpandDimsParser::Parse(const std::unique_ptr<tflite::OperatorT> &t | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| MS_LOG(DEBUG) << "parse TfliteExpandDimsParser"; | |||||
| std::unique_ptr<schema::ExpandDimsT> attr(new schema::ExpandDimsT()); | |||||
| std::unique_ptr<schema::ExpandDimsT> attr = std::make_unique<schema::ExpandDimsT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsExpandDimsOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsExpandDimsOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteFillParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflite_ | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::FillT> attr(new schema::FillT()); | |||||
| std::unique_ptr<schema::FillT> attr = std::make_unique<schema::FillT>(); | |||||
| if (tflite_op->inputs.size() > 1) { | if (tflite_op->inputs.size() > 1) { | ||||
| if (GetTfliteData(tflite_op->inputs[1], tflite_tensors, tflite_model_buffer, attr->dims)) { | if (GetTfliteData(tflite_op->inputs[1], tflite_tensors, tflite_model_buffer, attr->dims)) { | ||||
| @@ -47,7 +47,7 @@ STATUS TfliteFullyConnectedParser::Parse(const std::unique_ptr<tflite::OperatorT | |||||
| } else if (std::strcmp(node_name, "FakeQuant") == 0) { | } else if (std::strcmp(node_name, "FakeQuant") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteFakeQuantParser"; | MS_LOG(DEBUG) << "parse TfliteFakeQuantParser"; | ||||
| } | } | ||||
| std::unique_ptr<schema::FullConnectionT> attr(new schema::FullConnectionT()); | |||||
| std::unique_ptr<schema::FullConnectionT> attr = std::make_unique<schema::FullConnectionT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsFullyConnectedOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsFullyConnectedOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| @@ -55,7 +55,9 @@ STATUS TfliteFullyConnectedParser::Parse(const std::unique_ptr<tflite::OperatorT | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| attr->hasBias = true; | |||||
| bool hasBias = tflite_op->inputs.size() > 2 && tflite_op->inputs[2] != -1; | |||||
| attr->hasBias = hasBias; | |||||
| attr->axis = 1; | attr->axis = 1; | ||||
| attr->useAxis = false; | attr->useAxis = false; | ||||
| attr->activationType = GetActivationFunctionType(tflite_attr->fused_activation_function); | attr->activationType = GetActivationFunctionType(tflite_attr->fused_activation_function); | ||||
| @@ -67,8 +69,10 @@ STATUS TfliteFullyConnectedParser::Parse(const std::unique_ptr<tflite::OperatorT | |||||
| tflite_op->inputs[0], tensors_id->size(), tflite_tensors.size(), schema::Format_NHWC); | tflite_op->inputs[0], tensors_id->size(), tflite_tensors.size(), schema::Format_NHWC); | ||||
| AddOpInput(op, tensors_id, tensors_format, tensors_id_map, | AddOpInput(op, tensors_id, tensors_format, tensors_id_map, | ||||
| tflite_op->inputs[1], tensors_id->size(), tflite_tensors.size(), schema::Format_KHWC); | tflite_op->inputs[1], tensors_id->size(), tflite_tensors.size(), schema::Format_KHWC); | ||||
| AddOpInput(op, tensors_id, tensors_format, tensors_id_map, | |||||
| tflite_op->inputs[2], tensors_id->size(), tflite_tensors.size(), schema::Format_NHWC); | |||||
| if (hasBias) { | |||||
| AddOpInput(op, tensors_id, tensors_format, tensors_id_map, | |||||
| tflite_op->inputs[2], tensors_id->size(), tflite_tensors.size(), schema::Format_NHWC); | |||||
| } | |||||
| AddOpOutput(op, tensors_id, tensors_format, tensors_id_map, | AddOpOutput(op, tensors_id, tensors_format, tensors_id_map, | ||||
| tflite_op->outputs[0], tensors_id->size(), tflite_tensors.size(), schema::Format_NHWC); | tflite_op->outputs[0], tensors_id->size(), tflite_tensors.size(), schema::Format_NHWC); | ||||
| return RET_OK; | return RET_OK; | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteGatherNdParser::Parse(const std::unique_ptr<tflite::OperatorT> &tfl | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::GatherNdT> attr(new schema::GatherNdT()); | |||||
| std::unique_ptr<schema::GatherNdT> attr = std::make_unique<schema::GatherNdT>(); | |||||
| attr->batchDims = 0; | attr->batchDims = 0; | ||||
| op->primitive->value.type = schema::PrimitiveType_GatherNd; | op->primitive->value.type = schema::PrimitiveType_GatherNd; | ||||
| @@ -41,7 +41,7 @@ STATUS TfliteGatherParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflit | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::GatherT> attr(new schema::GatherT()); | |||||
| std::unique_ptr<schema::GatherT> attr = std::make_unique<schema::GatherT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsGatherOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsGatherOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| @@ -42,8 +42,16 @@ STATUS TfliteL2NormParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflit | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::L2NormT> attr(new schema::L2NormT()); | |||||
| std::unique_ptr<schema::L2NormT> attr = std::make_unique<schema::L2NormT>(); | |||||
| if (tflite_op->inputs.empty()) { | |||||
| MS_LOG(ERROR) << "the input is null"; | |||||
| return RET_NULL_PTR; | |||||
| } | |||||
| auto data_index = tflite_op->inputs[0]; | auto data_index = tflite_op->inputs[0]; | ||||
| if (tflite_op->inputs.size() <= data_index) { | |||||
| MS_LOG(ERROR) << "the size of input should be greater than " << data_index; | |||||
| return RET_ERROR; | |||||
| } | |||||
| const auto &data_tensor = tflite_tensors[data_index]; | const auto &data_tensor = tflite_tensors[data_index]; | ||||
| if (data_tensor == nullptr) { | if (data_tensor == nullptr) { | ||||
| MS_LOG(ERROR) << "the input tensor is null"; | MS_LOG(ERROR) << "the input tensor is null"; | ||||
| @@ -44,17 +44,17 @@ STATUS TfliteLogicalParser::Parse(const std::unique_ptr<tflite::OperatorT> &tfli | |||||
| const char *node_name = node_name_str.data()->c_str(); | const char *node_name = node_name_str.data()->c_str(); | ||||
| if (std::strcmp(node_name, "LogicalAnd") == 0) { | if (std::strcmp(node_name, "LogicalAnd") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteLogicalAndParser"; | MS_LOG(DEBUG) << "parse TfliteLogicalAndParser"; | ||||
| std::unique_ptr<schema::LogicalAndT> attr(new schema::LogicalAndT()); | |||||
| std::unique_ptr<schema::LogicalAndT> attr = std::make_unique<schema::LogicalAndT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_LogicalAnd; | op->primitive->value.type = schema::PrimitiveType_LogicalAnd; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "LogicalNot") == 0) { | } else if (std::strcmp(node_name, "LogicalNot") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteLogicalNotParser"; | MS_LOG(DEBUG) << "parse TfliteLogicalNotParser"; | ||||
| std::unique_ptr<schema::LogicalNotT> attr(new schema::LogicalNotT()); | |||||
| std::unique_ptr<schema::LogicalNotT> attr = std::make_unique<schema::LogicalNotT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_LogicalNot; | op->primitive->value.type = schema::PrimitiveType_LogicalNot; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } else if (std::strcmp(node_name, "LogicalOr") == 0) { | } else if (std::strcmp(node_name, "LogicalOr") == 0) { | ||||
| MS_LOG(DEBUG) << "parse TfliteLogicalOrParser"; | MS_LOG(DEBUG) << "parse TfliteLogicalOrParser"; | ||||
| std::unique_ptr<schema::LogicalOrT> attr(new schema::LogicalOrT()); | |||||
| std::unique_ptr<schema::LogicalOrT> attr = std::make_unique<schema::LogicalOrT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_LogicalOr; | op->primitive->value.type = schema::PrimitiveType_LogicalOr; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| } | } | ||||
| @@ -41,7 +41,7 @@ STATUS TfliteLRNParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflite_o | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::LocalResponseNormalizationT> attr(new schema::LocalResponseNormalizationT()); | |||||
| std::unique_ptr<schema::LocalResponseNormalizationT> attr = std::make_unique<schema::LocalResponseNormalizationT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsLocalResponseNormalizationOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsLocalResponseNormalizationOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| @@ -43,7 +43,8 @@ std::unique_ptr<tflite::ModelT> TfliteModelParser::ReadTfliteModel(const char *m | |||||
| } | } | ||||
| STATUS TfliteModelParser::CopyConstTensorData(const std::vector<std::unique_ptr<tflite::BufferT>> &tflite_model_buffer, | STATUS TfliteModelParser::CopyConstTensorData(const std::vector<std::unique_ptr<tflite::BufferT>> &tflite_model_buffer, | ||||
| const tflite::TensorT *tflite_tensor, schema::TensorT *tensor) { | |||||
| const tflite::TensorT *tflite_tensor, | |||||
| schema::TensorT *tensor) { | |||||
| auto count = 1; | auto count = 1; | ||||
| std::for_each(tflite_tensor->shape.begin(), tflite_tensor->shape.end(), [&](int32_t sha) { count *= sha; }); | std::for_each(tflite_tensor->shape.begin(), tflite_tensor->shape.end(), [&](int32_t sha) { count *= sha; }); | ||||
| auto data_size = count * GetDataTypeSize(TypeId(tensor->dataType)); | auto data_size = count * GetDataTypeSize(TypeId(tensor->dataType)); | ||||
| @@ -91,7 +92,8 @@ void TfliteModelParser::SetTensorQuantParam(const std::unique_ptr<tflite::Tensor | |||||
| STATUS TfliteModelParser::ConvertOp(const std::unique_ptr<tflite::ModelT> &tflite_model, | STATUS TfliteModelParser::ConvertOp(const std::unique_ptr<tflite::ModelT> &tflite_model, | ||||
| const std::unique_ptr<tflite::SubGraphT> &tflite_subgraph, | const std::unique_ptr<tflite::SubGraphT> &tflite_subgraph, | ||||
| const QuantType &quant_type, schema::MetaGraphT *sub_graph) { | |||||
| const QuantType &quant_type, | |||||
| schema::MetaGraphT *sub_graph) { | |||||
| int idx = 0; | int idx = 0; | ||||
| for (const auto &tflite_op : tflite_subgraph->operators) { | for (const auto &tflite_op : tflite_subgraph->operators) { | ||||
| auto tflite_op_type = (tflite_model->operator_codes[tflite_op->opcode_index])->builtin_code; | auto tflite_op_type = (tflite_model->operator_codes[tflite_op->opcode_index])->builtin_code; | ||||
| @@ -293,7 +295,8 @@ STATUS TfliteModelParser::ConvertGroupDepthwiseOp(schema::MetaGraphT* sub_graph) | |||||
| return RET_OK; | return RET_OK; | ||||
| } | } | ||||
| MetaGraphT *TfliteModelParser::Parse(const std::string &model_file, const std::string &weight_file, | |||||
| MetaGraphT *TfliteModelParser::Parse(const std::string &model_file, | |||||
| const std::string &weight_file, | |||||
| const QuantType &quant_type) { | const QuantType &quant_type) { | ||||
| std::unique_ptr<schema::MetaGraphT> sub_graph(new schema::MetaGraphT); | std::unique_ptr<schema::MetaGraphT> sub_graph(new schema::MetaGraphT); | ||||
| sub_graph->name = "MS_model converted by TF-Lite"; | sub_graph->name = "MS_model converted by TF-Lite"; | ||||
| @@ -58,14 +58,14 @@ class TfliteModelParser : public ModelParser { | |||||
| STATUS ConvertOp(const std::unique_ptr<tflite::ModelT> &tflite_model, | STATUS ConvertOp(const std::unique_ptr<tflite::ModelT> &tflite_model, | ||||
| const std::unique_ptr<tflite::SubGraphT> &tflite_subgraph, | const std::unique_ptr<tflite::SubGraphT> &tflite_subgraph, | ||||
| const QuantType &quant_type, | const QuantType &quant_type, | ||||
| schema::MetaGraphT* sub_graph); | |||||
| schema::MetaGraphT *sub_graph); | |||||
| STATUS ConvertTensor(const std::unique_ptr<tflite::SubGraphT> &tflite_subgraph, | STATUS ConvertTensor(const std::unique_ptr<tflite::SubGraphT> &tflite_subgraph, | ||||
| const std::vector<std::unique_ptr<tflite::BufferT>> &tflite_model_buffer, | const std::vector<std::unique_ptr<tflite::BufferT>> &tflite_model_buffer, | ||||
| schema::MetaGraphT* sub_graph); | |||||
| schema::MetaGraphT *sub_graph); | |||||
| STATUS GetGraphInfo(const std::unique_ptr<tflite::SubGraphT> &tflite_subgraph, | STATUS GetGraphInfo(const std::unique_ptr<tflite::SubGraphT> &tflite_subgraph, | ||||
| schema::MetaGraphT* sub_graph); | |||||
| schema::MetaGraphT *sub_graph); | |||||
| STATUS ConvertGroupDepthwiseOp(schema::MetaGraphT* sub_graph); | STATUS ConvertGroupDepthwiseOp(schema::MetaGraphT* sub_graph); | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteOneHotParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflit | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::OneHotT> attr(new schema::OneHotT()); | |||||
| std::unique_ptr<schema::OneHotT> attr = std::make_unique<schema::OneHotT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsOneHotOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsOneHotOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| @@ -40,7 +40,7 @@ STATUS TflitePadParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflite_o | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::PadT> attr(new schema::PadT()); | |||||
| std::unique_ptr<schema::PadT> attr = std::make_unique<schema::PadT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsPadOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsPadOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| @@ -39,7 +39,7 @@ STATUS TflitePoolingParser::Parse(const std::unique_ptr<tflite::OperatorT> &tfli | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::PoolingT> attr(new schema::PoolingT()); | |||||
| std::unique_ptr<schema::PoolingT> attr = std::make_unique<schema::PoolingT>(); | |||||
| std::vector<std::string> node_name_str; | std::vector<std::string> node_name_str; | ||||
| Split(op->name, &node_name_str, "-"); | Split(op->name, &node_name_str, "-"); | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteRangeParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflite | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::RangeT> attr(new schema::RangeT()); | |||||
| std::unique_ptr<schema::RangeT> attr = std::make_unique<schema::RangeT>(); | |||||
| attr->dType = 0; | attr->dType = 0; | ||||
| // attr->start | // attr->start | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteRankParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflite_ | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::RankT> attr(new schema::RankT()); | |||||
| std::unique_ptr<schema::RankT> attr = std::make_unique<schema::RankT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Rank; | op->primitive->value.type = schema::PrimitiveType_Rank; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteReduceParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflit | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::ReduceT> attr(new schema::ReduceT()); | |||||
| std::unique_ptr<schema::ReduceT> attr = std::make_unique<schema::ReduceT>(); | |||||
| // auto tflite_tensors = tflite_subgraph->tensors; | // auto tflite_tensors = tflite_subgraph->tensors; | ||||
| const auto &tflite_attr = tflite_op->builtin_options.AsReducerOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsReducerOptions(); | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteReshapeParser::Parse(const std::unique_ptr<tflite::OperatorT> &tfli | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::ReshapeT> attr(new schema::ReshapeT()); | |||||
| std::unique_ptr<schema::ReshapeT> attr = std::make_unique<schema::ReshapeT>(); | |||||
| const auto &tfliteAttr = tflite_op->builtin_options.AsReshapeOptions(); | const auto &tfliteAttr = tflite_op->builtin_options.AsReshapeOptions(); | ||||
| if (tfliteAttr == nullptr) { | if (tfliteAttr == nullptr) { | ||||
| @@ -39,7 +39,7 @@ STATUS TfliteResizeParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflit | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::ResizeT> attr(new schema::ResizeT()); | |||||
| std::unique_ptr<schema::ResizeT> attr = std::make_unique<schema::ResizeT>(); | |||||
| std::vector<std::string> node_name_str; | std::vector<std::string> node_name_str; | ||||
| Split(op->name.data(), &node_name_str, "-"); | Split(op->name.data(), &node_name_str, "-"); | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteReverseParser::Parse(const std::unique_ptr<tflite::OperatorT> &tfli | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::ReverseT> attr(new schema::ReverseT()); | |||||
| std::unique_ptr<schema::ReverseT> attr = std::make_unique<schema::ReverseT>(); | |||||
| if (GetTfliteData(tflite_op->inputs[1], tflite_tensors, tflite_model_buffer, attr->axis)) { | if (GetTfliteData(tflite_op->inputs[1], tflite_tensors, tflite_model_buffer, attr->axis)) { | ||||
| MS_LOG(ERROR) << "get reverse -> axis failed"; | MS_LOG(ERROR) << "get reverse -> axis failed"; | ||||
| @@ -42,7 +42,7 @@ STATUS TfliteReverseSequenceParser::Parse(const std::unique_ptr<tflite::Operator | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::ReverseSequenceT> attr(new schema::ReverseSequenceT()); | |||||
| std::unique_ptr<schema::ReverseSequenceT> attr = std::make_unique<schema::ReverseSequenceT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsReverseSequenceOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsReverseSequenceOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| @@ -41,7 +41,7 @@ STATUS TfliteScatterNdParser::Parse(const std::unique_ptr<tflite::OperatorT> &tf | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::ScatterNDT> attr(new schema::ScatterNDT()); | |||||
| std::unique_ptr<schema::ScatterNDT> attr = std::make_unique<schema::ScatterNDT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsScatterNdOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsScatterNdOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteShapeParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflite | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::ShapeT> attr(new schema::ShapeT()); | |||||
| std::unique_ptr<schema::ShapeT> attr = std::make_unique<schema::ShapeT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_Shape; | op->primitive->value.type = schema::PrimitiveType_Shape; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||
| @@ -41,7 +41,7 @@ STATUS TfliteSliceParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflite | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::SliceT> attr(new schema::SliceT()); | |||||
| std::unique_ptr<schema::SliceT> attr = std::make_unique<schema::SliceT>(); | |||||
| attr->format = schema::Format_NHWC; | attr->format = schema::Format_NHWC; | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteSoftmaxParser::Parse(const std::unique_ptr<tflite::OperatorT> &tfli | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::SoftMaxT> attr(new schema::SoftMaxT()); | |||||
| std::unique_ptr<schema::SoftMaxT> attr = std::make_unique<schema::SoftMaxT>(); | |||||
| attr->axis = -1; | attr->axis = -1; | ||||
| @@ -41,7 +41,7 @@ STATUS TfliteSpaceToBatchNDParser::Parse(const std::unique_ptr<tflite::OperatorT | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::SpaceToBatchNDT> attr(new schema::SpaceToBatchNDT()); | |||||
| std::unique_ptr<schema::SpaceToBatchNDT> attr = std::make_unique<schema::SpaceToBatchNDT>(); | |||||
| if (GetTfliteData(tflite_op->inputs[1], tflite_tensors, tflite_model_buffer, attr->blockShape)) { | if (GetTfliteData(tflite_op->inputs[1], tflite_tensors, tflite_model_buffer, attr->blockShape)) { | ||||
| MS_LOG(ERROR) << "get spaceToBatchND -> blockShape failed"; | MS_LOG(ERROR) << "get spaceToBatchND -> blockShape failed"; | ||||
| @@ -41,7 +41,7 @@ STATUS TfliteSpaceToDepthParser::Parse(const std::unique_ptr<tflite::OperatorT> | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::SpaceToDepthT> attr(new schema::SpaceToDepthT()); | |||||
| std::unique_ptr<schema::SpaceToDepthT> attr = std::make_unique<schema::SpaceToDepthT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsSpaceToDepthOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsSpaceToDepthOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| @@ -41,7 +41,7 @@ STATUS TfliteSparseToDenseParser::Parse(const std::unique_ptr<tflite::OperatorT> | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::SparseToDenseT> attr(new schema::SparseToDenseT()); | |||||
| std::unique_ptr<schema::SparseToDenseT> attr = std::make_unique<schema::SparseToDenseT>(); | |||||
| attr->validateIndices = false; | attr->validateIndices = false; | ||||
| @@ -41,7 +41,7 @@ STATUS TfliteSplitParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflite | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::SplitT> attr(new schema::SplitT()); | |||||
| std::unique_ptr<schema::SplitT> attr = std::make_unique<schema::SplitT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsSplitOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsSplitOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| @@ -39,7 +39,7 @@ STATUS TfliteSplitVParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflit | |||||
| } | } | ||||
| MS_LOG(DEBUG) << "parse TfliteSplitVParser"; | MS_LOG(DEBUG) << "parse TfliteSplitVParser"; | ||||
| std::unique_ptr<schema::SplitT> attr(new schema::SplitT()); | |||||
| std::unique_ptr<schema::SplitT> attr = std::make_unique<schema::SplitT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsSplitVOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsSplitVOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteSqueezeParser::Parse(const std::unique_ptr<tflite::OperatorT> &tfli | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::SqueezeT> attr(new schema::SqueezeT()); | |||||
| std::unique_ptr<schema::SqueezeT> attr = std::make_unique<schema::SqueezeT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsSqueezeOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsSqueezeOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| @@ -40,7 +40,7 @@ STATUS TfliteStackParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflite | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::StackT> attr(new schema::StackT()); | |||||
| std::unique_ptr<schema::StackT> attr = std::make_unique<schema::StackT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsPackOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsPackOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| MS_LOG(ERROR) << "get op: " << op->name.c_str() << " attr failed"; | MS_LOG(ERROR) << "get op: " << op->name.c_str() << " attr failed"; | ||||
| @@ -39,7 +39,7 @@ STATUS TfliteStridedSliceParser::Parse(const std::unique_ptr<tflite::OperatorT> | |||||
| } | } | ||||
| MS_LOG(DEBUG) << "parse TfliteStridedSliceParser"; | MS_LOG(DEBUG) << "parse TfliteStridedSliceParser"; | ||||
| std::unique_ptr<schema::StridedSliceT> attr(new schema::StridedSliceT()); | |||||
| std::unique_ptr<schema::StridedSliceT> attr = std::make_unique<schema::StridedSliceT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsStridedSliceOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsStridedSliceOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| MS_LOG(ERROR) << "get op: %s attr failed", op->name.c_str(); | MS_LOG(ERROR) << "get op: %s attr failed", op->name.c_str(); | ||||
| @@ -41,7 +41,7 @@ STATUS TfliteTileParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflite_ | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::TileT> attr(new schema::TileT()); | |||||
| std::unique_ptr<schema::TileT> attr = std::make_unique<schema::TileT>(); | |||||
| if (GetTfliteData(tflite_op->inputs[1], tflite_tensors, tflite_model_buffer, attr->multiples)) { | if (GetTfliteData(tflite_op->inputs[1], tflite_tensors, tflite_model_buffer, attr->multiples)) { | ||||
| MS_LOG(ERROR) << "get tile -> multiples failed"; | MS_LOG(ERROR) << "get tile -> multiples failed"; | ||||
| @@ -41,7 +41,7 @@ STATUS TfliteTopKV2Parser::Parse(const std::unique_ptr<tflite::OperatorT> &tflit | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::TopKT> attr(new schema::TopKT()); | |||||
| std::unique_ptr<schema::TopKT> attr = std::make_unique<schema::TopKT>(); | |||||
| attr->sorted = true; | attr->sorted = true; | ||||
| std::vector<int32_t> k; | std::vector<int32_t> k; | ||||
| @@ -39,7 +39,7 @@ STATUS TfliteTransposeParser::Parse(const std::unique_ptr<tflite::OperatorT> &tf | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::TransposeT> attr(new schema::TransposeT()); | |||||
| std::unique_ptr<schema::TransposeT> attr = std::make_unique<schema::TransposeT>(); | |||||
| if (GetTfliteData(tflite_op->inputs[1], tflite_tensors, tflite_model_buffer, attr->perm)) { | if (GetTfliteData(tflite_op->inputs[1], tflite_tensors, tflite_model_buffer, attr->perm)) { | ||||
| MS_LOG(ERROR) << "get transpose -> perm failed"; | MS_LOG(ERROR) << "get transpose -> perm failed"; | ||||
| @@ -41,7 +41,7 @@ STATUS TfliteUniqueParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflit | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::UniqueT> attr(new schema::UniqueT()); | |||||
| std::unique_ptr<schema::UniqueT> attr = std::make_unique<schema::UniqueT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsUniqueOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsUniqueOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| @@ -42,7 +42,7 @@ STATUS TfliteUnstackParser::Parse(const std::unique_ptr<tflite::OperatorT> &tfli | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::UnstackT> attr(new schema::UnstackT()); | |||||
| std::unique_ptr<schema::UnstackT> attr = std::make_unique<schema::UnstackT>(); | |||||
| const auto &tflite_attr = tflite_op->builtin_options.AsUnpackOptions(); | const auto &tflite_attr = tflite_op->builtin_options.AsUnpackOptions(); | ||||
| if (tflite_attr == nullptr) { | if (tflite_attr == nullptr) { | ||||
| @@ -41,7 +41,7 @@ STATUS TfliteWhereParser::Parse(const std::unique_ptr<tflite::OperatorT> &tflite | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::WhereT> attr(new schema::WhereT()); | |||||
| std::unique_ptr<schema::WhereT> attr = std::make_unique<schema::WhereT>(); | |||||
| if (GetTfliteData(tflite_op->inputs[0], tflite_tensors, tflite_model_buffer, attr->condition)) { | if (GetTfliteData(tflite_op->inputs[0], tflite_tensors, tflite_model_buffer, attr->condition)) { | ||||
| MS_LOG(ERROR) << "get where -> condition failed"; | MS_LOG(ERROR) << "get where -> condition failed"; | ||||
| @@ -41,7 +41,7 @@ STATUS TfliteZerosLikeParser::Parse(const std::unique_ptr<tflite::OperatorT> &tf | |||||
| return RET_NULL_PTR; | return RET_NULL_PTR; | ||||
| } | } | ||||
| std::unique_ptr<schema::ZerosLikeT> attr(new schema::ZerosLikeT()); | |||||
| std::unique_ptr<schema::ZerosLikeT> attr = std::make_unique<schema::ZerosLikeT>(); | |||||
| op->primitive->value.type = schema::PrimitiveType_ZerosLike; | op->primitive->value.type = schema::PrimitiveType_ZerosLike; | ||||
| op->primitive->value.value = attr.release(); | op->primitive->value.value = attr.release(); | ||||