2 #ifndef _NNDEPLOY_IR_OP_PARAM_H_
3 #define _NNDEPLOY_IR_OP_PARAM_H_
16 #include "rapidjson/document.h"
17 #include "rapidjson/stringbuffer.h"
18 #include "rapidjson/writer.h"
22 #pragma warning(disable : 4267)
241 template <
typename T>
243 virtual std::shared_ptr<base::Param> createOpParam(
OpType type) {
244 return std::make_shared<T>();
253 extern NNDEPLOY_CC_API std::map<OpType, std::shared_ptr<OpParamCreator>> &
261 template <
typename T>
278 #define REGISTER_OP_PARAM_IMPLEMENTION(op_type, op_param_class) \
279 TypeOpParamRegister<TypeOpParamCreator<op_param_class>> \
280 g_##op_type##_##op_param_class##_register(op_type);
312 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
313 json.AddMember(
"epsilon_", epsilon_, allocator);
314 json.AddMember(
"momentum_", momentum_, allocator);
315 json.AddMember(
"training_mode_", training_mode_, allocator);
320 if (json.HasMember(
"epsilon_")) {
321 epsilon_ = json[
"epsilon_"].GetFloat();
326 if (json.HasMember(
"momentum_")) {
327 momentum_ = json[
"momentum_"].GetFloat();
332 if (json.HasMember(
"training_mode_")) {
333 training_mode_ = json[
"training_mode_"].GetInt();
343 float epsilon_ = 1e-05f;
346 float momentum_ = 0.9f;
347 int training_mode_ = 0;
360 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
361 json.AddMember(
"axis_",
axis_, allocator);
366 if (json.HasMember(
"axis_")) {
367 axis_ = json[
"axis_"].GetInt();
389 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
390 json.AddMember(
"transposeA_",
transposeA_, allocator);
391 json.AddMember(
"transposeB_",
transposeB_, allocator);
396 if (json.HasMember(
"transposeA_")) {
401 if (json.HasMember(
"transposeB_")) {
426 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
427 json.AddMember(
"auto_pad_", rapidjson::Value(auto_pad_.c_str(), allocator),
429 json.AddMember(
"dilations_", rapidjson::Value(rapidjson::kArrayType),
431 for (
size_t i = 0; i < dilations_.size(); ++i) {
432 json[
"dilations_"].PushBack(dilations_[i], allocator);
434 json.AddMember(
"group_", group_, allocator);
435 json.AddMember(
"kernel_shape_", rapidjson::Value(rapidjson::kArrayType),
437 for (
size_t i = 0; i < kernel_shape_.size(); ++i) {
438 json[
"kernel_shape_"].PushBack(kernel_shape_[i], allocator);
440 json.AddMember(
"pads_", rapidjson::Value(rapidjson::kArrayType), allocator);
441 for (
size_t i = 0; i < pads_.size(); ++i) {
442 json[
"pads_"].PushBack(pads_[i], allocator);
444 json.AddMember(
"strides_", rapidjson::Value(rapidjson::kArrayType),
446 for (
size_t i = 0; i < strides_.size(); ++i) {
447 json[
"strides_"].PushBack(strides_[i], allocator);
451 rapidjson::Value(
opTypeToString(activate_op_).c_str(), allocator),
453 if (activate_op_ !=
kOpTypeNone && fused_op_param_ !=
nullptr) {
454 rapidjson::Value op_desc_json(rapidjson::kObjectType);
455 fused_op_param_->serialize(op_desc_json, allocator);
456 json.AddMember(
"fused_op_param_", op_desc_json, allocator);
462 if (json.HasMember(
"auto_pad_")) {
463 auto_pad_ = json[
"auto_pad_"].GetString();
465 auto_pad_ =
"NOTSET";
468 if (json.HasMember(
"dilations_")) {
470 for (
size_t i = 0; i < json[
"dilations_"].Size(); ++i) {
471 dilations_.push_back(json[
"dilations_"][i].GetInt());
477 if (json.HasMember(
"group_")) {
478 group_ = json[
"group_"].GetInt();
483 if (json.HasMember(
"kernel_shape_")) {
484 kernel_shape_.clear();
485 for (
size_t i = 0; i < json[
"kernel_shape_"].Size(); ++i) {
486 kernel_shape_.push_back(json[
"kernel_shape_"][i].GetInt());
489 kernel_shape_.clear();
492 if (json.HasMember(
"pads_")) {
494 for (
size_t i = 0; i < json[
"pads_"].Size(); ++i) {
495 pads_.push_back(json[
"pads_"][i].GetInt());
498 pads_ = {0, 0, 0, 0};
501 if (json.HasMember(
"strides_")) {
503 for (
size_t i = 0; i < json[
"strides_"].Size(); ++i) {
504 strides_.push_back(json[
"strides_"][i].GetInt());
510 if (json.HasMember(
"activate_op_")) {
513 if (json.HasMember(
"fused_op_param_")) {
514 fused_op_param_->deserialize(json[
"fused_op_param_"]);
525 std::string auto_pad_ =
"NOTSET";
527 std::vector<int> dilations_ = {1, 1};
533 std::vector<int> pads_ = {0, 0, 0, 0};
535 std::vector<int> strides_ = {1, 1};
540 std::shared_ptr<base::Param> fused_op_param_ =
nullptr;
553 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
554 json.AddMember(
"auto_pad_", rapidjson::Value(auto_pad_.c_str(), allocator),
556 json.AddMember(
"ceil_mode_", ceil_mode_, allocator);
557 rapidjson::Value dilations_array(rapidjson::kArrayType);
558 for (
size_t i = 0; i < dilations_.size(); ++i) {
559 dilations_array.PushBack(dilations_[i], allocator);
561 json.AddMember(
"dilations_", dilations_array, allocator);
563 rapidjson::Value kernel_shape_array(rapidjson::kArrayType);
564 for (
size_t i = 0; i < kernel_shape_.size(); ++i) {
565 kernel_shape_array.PushBack(kernel_shape_[i], allocator);
567 json.AddMember(
"kernel_shape_", kernel_shape_array, allocator);
569 rapidjson::Value pads_array(rapidjson::kArrayType);
570 for (
size_t i = 0; i < pads_.size(); ++i) {
571 pads_array.PushBack(pads_[i], allocator);
573 json.AddMember(
"pads_", pads_array, allocator);
575 json.AddMember(
"storage_order_", storage_order_, allocator);
577 rapidjson::Value strides_array(rapidjson::kArrayType);
578 for (
size_t i = 0; i < strides_.size(); ++i) {
579 strides_array.PushBack(strides_[i], allocator);
581 json.AddMember(
"strides_", strides_array, allocator);
587 if (json.HasMember(
"auto_pad_")) {
588 auto_pad_ = json[
"auto_pad_"].GetString();
590 auto_pad_ =
"NOTSET";
593 if (json.HasMember(
"ceil_mode_")) {
594 ceil_mode_ = json[
"ceil_mode_"].GetInt();
599 if (json.HasMember(
"dilations_")) {
601 for (
size_t i = 0; i < json[
"dilations_"].Size(); ++i) {
602 dilations_.push_back(json[
"dilations_"][i].GetInt());
608 if (json.HasMember(
"kernel_shape_")) {
609 kernel_shape_.clear();
610 for (
size_t i = 0; i < json[
"kernel_shape_"].Size(); ++i) {
611 kernel_shape_.push_back(json[
"kernel_shape_"][i].GetInt());
614 kernel_shape_.clear();
617 if (json.HasMember(
"pads_")) {
619 for (
size_t i = 0; i < json[
"pads_"].Size(); ++i) {
620 pads_.push_back(json[
"pads_"][i].GetInt());
623 pads_ = {0, 0, 0, 0};
626 if (json.HasMember(
"storage_order_")) {
627 storage_order_ = json[
"storage_order_"].GetInt();
632 if (json.HasMember(
"strides_")) {
634 for (
size_t i = 0; i < json[
"strides_"].Size(); ++i) {
635 strides_.push_back(json[
"strides_"][i].GetInt());
645 std::string auto_pad_ =
"NOTSET";
647 std::vector<int> dilations_ = {1, 1};
649 std::vector<int> pads_ = {0, 0, 0, 0};
650 int storage_order_ = 0;
651 std::vector<int> strides_ = {1, 1};
665 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
666 json.AddMember(
"allowzero_", allowzero_, allocator);
671 if (json.HasMember(
"allowzero_")) {
672 allowzero_ = json[
"allowzero_"].GetInt();
695 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
696 json.AddMember(
"antialias_", antialias_, allocator);
697 json.AddMember(
"axes_", axes_, allocator);
699 "coordinate_transformation_mode_",
700 rapidjson::Value(coordinate_transformation_mode_.c_str(), allocator),
702 json.AddMember(
"cubic_coeff_a_", cubic_coeff_a_, allocator);
703 json.AddMember(
"exclude_outside_", exclude_outside_, allocator);
704 json.AddMember(
"extrapolation_value_", extrapolation_value_, allocator);
706 "keep_aspect_ratio_policy_",
707 rapidjson::Value(keep_aspect_ratio_policy_.c_str(), allocator),
709 json.AddMember(
"mode_", rapidjson::Value(mode_.c_str(), allocator),
711 json.AddMember(
"nearest_mode_",
712 rapidjson::Value(nearest_mode_.c_str(), allocator),
718 if (json.HasMember(
"antialias_")) {
719 antialias_ = json[
"antialias_"].GetInt();
724 if (json.HasMember(
"axes_")) {
725 axes_ = json[
"axes_"].GetInt();
730 if (json.HasMember(
"coordinate_transformation_mode_")) {
731 coordinate_transformation_mode_ =
732 json[
"coordinate_transformation_mode_"].GetString();
734 coordinate_transformation_mode_ =
"half_pixel";
737 if (json.HasMember(
"cubic_coeff_a_")) {
738 cubic_coeff_a_ = json[
"cubic_coeff_a_"].GetFloat();
740 cubic_coeff_a_ = -0.75;
743 if (json.HasMember(
"exclude_outside_")) {
744 exclude_outside_ = json[
"exclude_outside_"].GetInt();
746 exclude_outside_ = 0;
749 if (json.HasMember(
"extrapolation_value_")) {
750 extrapolation_value_ = json[
"extrapolation_value_"].GetFloat();
752 extrapolation_value_ = -0.0;
755 if (json.HasMember(
"keep_aspect_ratio_policy_")) {
756 keep_aspect_ratio_policy_ = json[
"keep_aspect_ratio_policy_"].GetString();
758 keep_aspect_ratio_policy_ =
"stretch";
761 if (json.HasMember(
"mode_")) {
762 mode_ = json[
"mode_"].GetString();
767 if (json.HasMember(
"nearest_mode_")) {
768 nearest_mode_ = json[
"nearest_mode_"].GetString();
770 nearest_mode_ =
"round_prefer_floor";
779 std::string coordinate_transformation_mode_ =
"half_pixel";
780 float cubic_coeff_a_ = -0.75;
781 int exclude_outside_ = 0;
782 float extrapolation_value_ = -0.0;
783 std::string keep_aspect_ratio_policy_ =
"stretch";
784 std::string mode_ =
"nearest";
785 std::string nearest_mode_ =
"round_prefer_floor";
799 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
800 json.AddMember(
"axis_", axis_, allocator);
805 if (json.HasMember(
"axis_")) {
806 axis_ = json[
"axis_"].GetInt();
829 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
830 json.AddMember(
"axis_", axis_, allocator);
831 json.AddMember(
"num_outputs_", num_outputs_, allocator);
836 if (json.HasMember(
"axis_")) {
837 axis_ = json[
"axis_"].GetInt();
842 if (json.HasMember(
"num_outputs_")) {
843 num_outputs_ = json[
"num_outputs_"].GetInt();
845 num_outputs_ = INT_MAX;
853 int num_outputs_ = INT_MAX;
867 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
868 rapidjson::Value permArray(rapidjson::kArrayType);
869 for (
size_t i = 0; i < perm_.size(); ++i) {
870 permArray.PushBack(perm_[i], allocator);
872 json.AddMember(
"perm_", permArray, allocator);
877 if (json.HasMember(
"perm_")) {
879 for (
size_t i = 0; i < json[
"perm_"].Size(); ++i) {
880 perm_.push_back(json[
"perm_"][i].GetInt());
903 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
904 json.AddMember(
"eps_", eps_, allocator);
905 json.AddMember(
"is_last_", is_last_, allocator);
910 if (json.HasMember(
"eps_")) {
911 eps_ = json[
"eps_"].GetFloat();
916 if (json.HasMember(
"is_last_")) {
917 is_last_ = json[
"is_last_"].GetBool();
927 bool is_last_ =
false;
940 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
941 json.AddMember(
"epsilon_", epsilon_, allocator);
946 if (json.HasMember(
"epsilon_")) {
947 epsilon_ = json[
"epsilon_"].GetFloat();
955 float epsilon_ = 1e-5f;
968 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
969 json.AddMember(
"axis_", axis_, allocator);
974 if (json.HasMember(
"axis_")) {
975 axis_ = json[
"axis_"].GetInt();
997 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1016 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1017 json.AddMember(
"alpha_", alpha_, allocator);
1018 json.AddMember(
"beta_", beta_, allocator);
1019 json.AddMember(
"trans_a_", trans_a_, allocator);
1020 json.AddMember(
"trans_b_", trans_b_, allocator);
1025 if (json.HasMember(
"alpha_")) {
1026 alpha_ = json[
"alpha_"].GetFloat();
1031 if (json.HasMember(
"beta_")) {
1032 beta_ = json[
"beta_"].GetFloat();
1037 if (json.HasMember(
"trans_a_")) {
1038 trans_a_ = json[
"trans_a_"].GetInt();
1043 if (json.HasMember(
"trans_b_")) {
1044 trans_b_ = json[
"trans_b_"].GetInt();
1069 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1070 json.AddMember(
"axis_", axis_, allocator);
1071 json.AddMember(
"saturate_", saturate_, allocator);
1076 if (json.HasMember(
"axis_")) {
1077 axis_ = json[
"axis_"].GetInt();
1082 if (json.HasMember(
"saturate_")) {
1083 saturate_ = json[
"saturate_"].GetInt();
1106 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1107 json.AddMember(
"axis_", axis_, allocator);
1112 if (json.HasMember(
"axis_")) {
1113 axis_ = json[
"axis_"].GetInt();
1136 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1137 json.AddMember(
"auto_pad_", rapidjson::Value(auto_pad_.c_str(), allocator),
1139 json.AddMember(
"dilations_", rapidjson::Value(rapidjson::kArrayType),
1141 for (
size_t i = 0; i < dilations_.size(); ++i) {
1142 json[
"dilations_"].PushBack(dilations_[i], allocator);
1144 json.AddMember(
"group_", group_, allocator);
1145 json.AddMember(
"kernel_shape_", rapidjson::Value(rapidjson::kArrayType),
1147 for (
size_t i = 0; i < kernel_shape_.size(); ++i) {
1148 json[
"kernel_shape_"].PushBack(kernel_shape_[i], allocator);
1150 json.AddMember(
"pads_", rapidjson::Value(rapidjson::kArrayType), allocator);
1151 for (
size_t i = 0; i < pads_.size(); ++i) {
1152 json[
"pads_"].PushBack(pads_[i], allocator);
1154 json.AddMember(
"strides_", rapidjson::Value(rapidjson::kArrayType),
1156 for (
size_t i = 0; i < strides_.size(); ++i) {
1157 json[
"strides_"].PushBack(strides_[i], allocator);
1164 if (json.HasMember(
"auto_pad_")) {
1165 auto_pad_ = json[
"auto_pad_"].GetString();
1167 auto_pad_ =
"NOTSET";
1170 if (json.HasMember(
"dilations_")) {
1172 for (
size_t i = 0; i < json[
"dilations_"].Size(); ++i) {
1173 dilations_.push_back(json[
"dilations_"][i].GetInt());
1176 dilations_ = {1, 1};
1179 if (json.HasMember(
"group_")) {
1180 group_ = json[
"group_"].GetInt();
1185 if (json.HasMember(
"kernel_shape_")) {
1186 kernel_shape_.clear();
1187 for (
size_t i = 0; i < json[
"kernel_shape_"].Size(); ++i) {
1188 kernel_shape_.push_back(json[
"kernel_shape_"][i].GetInt());
1191 kernel_shape_.clear();
1194 if (json.HasMember(
"pads_")) {
1196 for (
size_t i = 0; i < json[
"pads_"].Size(); ++i) {
1197 pads_.push_back(json[
"pads_"][i].GetInt());
1200 pads_ = {0, 0, 0, 0};
1203 if (json.HasMember(
"strides_")) {
1205 for (
size_t i = 0; i < json[
"strides_"].Size(); ++i) {
1206 strides_.push_back(json[
"strides_"][i].GetInt());
1217 std::string auto_pad_ =
"NOTSET";
1219 std::vector<int> dilations_ = {1, 1};
1225 std::vector<int> pads_ = {0, 0, 0, 0};
1227 std::vector<int> strides_ = {1, 1};
1241 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1242 json.AddMember(
"auto_pad_", rapidjson::Value(auto_pad_.c_str(), allocator),
1244 json.AddMember(
"ceil_mode_", ceil_mode_, allocator);
1245 json.AddMember(
"count_include_pad_",
1246 rapidjson::Value(count_include_pad_.c_str(), allocator),
1248 json.AddMember(
"dilations_", rapidjson::Value(rapidjson::kArrayType),
1250 for (
size_t i = 0; i < dilations_.size(); ++i) {
1251 json[
"dilations_"].PushBack(dilations_[i], allocator);
1253 json.AddMember(
"kernel_shape_", rapidjson::Value(rapidjson::kArrayType),
1255 for (
size_t i = 0; i < kernel_shape_.size(); ++i) {
1256 json[
"kernel_shape_"].PushBack(kernel_shape_[i], allocator);
1258 json.AddMember(
"pads_", rapidjson::Value(rapidjson::kArrayType), allocator);
1259 for (
size_t i = 0; i < pads_.size(); ++i) {
1260 json[
"pads_"].PushBack(pads_[i], allocator);
1262 json.AddMember(
"strides_", rapidjson::Value(rapidjson::kArrayType),
1264 for (
size_t i = 0; i < strides_.size(); ++i) {
1265 json[
"strides_"].PushBack(strides_[i], allocator);
1272 if (json.HasMember(
"auto_pad_")) {
1273 auto_pad_ = json[
"auto_pad_"].GetString();
1275 auto_pad_ =
"NOTSET";
1278 if (json.HasMember(
"ceil_mode_")) {
1279 ceil_mode_ = json[
"ceil_mode_"].GetInt();
1284 if (json.HasMember(
"count_include_pad_")) {
1285 count_include_pad_ = json[
"count_include_pad_"].GetString();
1287 count_include_pad_ =
"EXCLUDE";
1290 if (json.HasMember(
"dilations_")) {
1292 for (
size_t i = 0; i < json[
"dilations_"].Size(); ++i) {
1293 dilations_.push_back(json[
"dilations_"][i].GetInt());
1296 dilations_ = {1, 1};
1299 if (json.HasMember(
"kernel_shape_")) {
1300 kernel_shape_.clear();
1301 for (
size_t i = 0; i < json[
"kernel_shape_"].Size(); ++i) {
1302 kernel_shape_.push_back(json[
"kernel_shape_"][i].GetInt());
1305 kernel_shape_.clear();
1308 if (json.HasMember(
"pads_")) {
1310 for (
size_t i = 0; i < json[
"pads_"].Size(); ++i) {
1311 pads_.push_back(json[
"pads_"][i].GetInt());
1314 pads_ = {0, 0, 0, 0};
1317 if (json.HasMember(
"strides_")) {
1319 for (
size_t i = 0; i < json[
"strides_"].Size(); ++i) {
1320 strides_.push_back(json[
"strides_"][i].GetInt());
1331 std::string auto_pad_ =
"NOTSET";
1335 std::string count_include_pad_ =
"EXCLUDE";
1337 std::vector<int> dilations_ = {1, 1};
1341 std::vector<int> pads_ = {0, 0, 0, 0};
1343 std::vector<int> strides_ = {1, 1};
1356 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1357 json.AddMember(
"saturate_", saturate_, allocator);
1358 json.AddMember(
"to_", rapidjson::Value(rapidjson::kArrayType), allocator);
1359 json[
"to_"].PushBack(
static_cast<int32_t
>(to_.code_), allocator);
1360 json[
"to_"].PushBack(
static_cast<int32_t
>(to_.bits_), allocator);
1361 json[
"to_"].PushBack(
static_cast<int32_t
>(to_.lanes_), allocator);
1366 if (json.HasMember(
"saturate_")) {
1367 saturate_ = json[
"saturate_"].GetInt();
1372 if (json.HasMember(
"to_")) {
1373 to_.code_ = json[
"to_"][0].GetInt();
1374 to_.bits_ = json[
"to_"][1].GetInt();
1375 to_.lanes_ = json[
"to_"][2].GetInt();
1399 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1400 json.AddMember(
"axes_", axes_, allocator);
1405 if (json.HasMember(
"axes_")) {
1406 axes_ = json[
"axes_"].GetInt();
1427 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1428 json.AddMember(
"axis_", axis_, allocator);
1433 if (json.HasMember(
"axis_")) {
1434 axis_ = json[
"axis_"].GetInt();
1455 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1456 json.AddMember(
"keepdims_", keepdims_, allocator);
1457 json.AddMember(
"noop_with_empty_axes_", noop_with_empty_axes_, allocator);
1462 if (json.HasMember(
"keepdims_")) {
1463 keepdims_ = json[
"keepdims_"].GetInt();
1468 if (json.HasMember(
"noop_with_empty_axes_")) {
1469 noop_with_empty_axes_ = json[
"noop_with_empty_axes_"].GetInt();
1471 noop_with_empty_axes_ = 0;
1479 int noop_with_empty_axes_ = 0;
1492 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1493 json.AddMember(
"keepdims_", keepdims_, allocator);
1494 json.AddMember(
"noop_with_empty_axes_", noop_with_empty_axes_, allocator);
1499 if (json.HasMember(
"keepdims_")) {
1500 keepdims_ = json[
"keepdims_"].GetInt();
1505 if (json.HasMember(
"noop_with_empty_axes_")) {
1506 noop_with_empty_axes_ = json[
"noop_with_empty_axes_"].GetInt();
1508 noop_with_empty_axes_ = 0;
1516 int noop_with_empty_axes_ = 0;
1529 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1530 json.AddMember(
"keepdims_", keepdims_, allocator);
1531 json.AddMember(
"noop_with_empty_axes_", noop_with_empty_axes_, allocator);
1536 if (json.HasMember(
"keepdims_")) {
1537 keepdims_ = json[
"keepdims_"].GetInt();
1542 if (json.HasMember(
"noop_with_empty_axes_")) {
1543 noop_with_empty_axes_ = json[
"noop_with_empty_axes_"].GetInt();
1545 noop_with_empty_axes_ = 0;
1553 int noop_with_empty_axes_ = 0;
1566 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1567 json.AddMember(
"keepdims_", keepdims_, allocator);
1568 json.AddMember(
"noop_with_empty_axes_", noop_with_empty_axes_, allocator);
1573 if (json.HasMember(
"keepdims_")) {
1574 keepdims_ = json[
"keepdims_"].GetInt();
1579 if (json.HasMember(
"noop_with_empty_axes_")) {
1580 noop_with_empty_axes_ = json[
"noop_with_empty_axes_"].GetInt();
1582 noop_with_empty_axes_ = 0;
1590 int noop_with_empty_axes_ = 0;
1603 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1604 json.AddMember(
"start_", start_, allocator);
1605 json.AddMember(
"end_", end_, allocator);
1610 if (json.HasMember(
"start_")) {
1611 start_ = json[
"start_"].GetInt();
1616 if (json.HasMember(
"end_")) {
1617 end_ = json[
"end_"].GetInt();
1640 rapidjson::Document::AllocatorType &allocator) {
1641 json.AddMember(
"value_", value_, allocator);
1642 json.AddMember(
"datatype_", rapidjson::Value(rapidjson::kArrayType),
1644 json[
"datatype_"].PushBack(
static_cast<int32_t
>(datatype_.code_),
1646 json[
"datatype_"].PushBack(
static_cast<int32_t
>(datatype_.bits_),
1648 json[
"datatype_"].PushBack(
static_cast<int32_t
>(datatype_.lanes_),
1654 if (json.HasMember(
"value_")) {
1655 value_ = json[
"value_"].GetFloat();
1660 if (json.HasMember(
"datatype_")) {
1661 datatype_.code_ = json[
"datatype_"][0].GetInt();
1662 datatype_.bits_ = json[
"datatype_"][1].GetInt();
1663 datatype_.lanes_ = json[
"datatype_"][2].GetInt();
1672 float value_ = 0.0f;
1681 #pragma warning(pop)
virtual base::Status deserialize(rapidjson::Value &json)
virtual std::string serialize()
virtual base::Status deserialize(rapidjson::Value &json)
virtual ~AveragePoolParam()
std::vector< int > kernel_shape_
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual ~BatchNormalizationParam()
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
BatchNormalizationParam()
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual base::Status deserialize(rapidjson::Value &json)
virtual ~ConstantOfShapeParam()
base::Status deserialize(rapidjson::Value &json)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
std::vector< int > kernel_shape_
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual ~DequantizeLinearParam()
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual base::Status deserialize(rapidjson::Value &json)
virtual ~EmbeddingParam()
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
LayerNormalizationParam()
virtual base::Status deserialize(rapidjson::Value &json)
virtual ~LayerNormalizationParam()
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
std::vector< int > kernel_shape_
virtual std::shared_ptr< base::Param > createOpParam(OpType type)=0
virtual ~OpParamCreator()
virtual base::Status deserialize(rapidjson::Value &json)
std::vector< int > kernel_shape_
virtual ~QLinearConvParam()
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual ~QuantizeLinearParam()
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual ~ReduceMaxParam()
virtual ~ReduceMeanParam()
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual ~ReduceMinParam()
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual base::Status deserialize(rapidjson::Value &json)
virtual ~ReduceSumParam()
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status deserialize(rapidjson::Value &json)
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual base::Status deserialize(rapidjson::Value &json)
virtual ~TransposeParam()
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
TypeOpParamRegister(OpType type)
virtual base::Status deserialize(rapidjson::Value &json)
virtual ~UnsqueezeParam()
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
#define NNDEPLOY_CC_API
api
DataType dataTypeOf< float >()
base::Status serialize(Graph *graph, rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
std::map< OpType, std::shared_ptr< OpParamCreator > > & getGlobalOpParamCreatorMap()
Get the Global base::Param Creator Map object.
OpType stringToOpType(const std::string &op_type_name)
std::string opTypeToString(OpType op_type)
@ kOpTypeNonMaxSuppression
@ kOpTypeGlobalAveragePool
@ kOpTypeSequenceConstruct
@ kOpTypeBatchNormalization
@ kOpTypeRandomNormalLike
@ kOpTypeDequantizeLinear
@ kOpTypeRandomUniformLike
@ kOpTypeLayerNormalization
@ kOpTypeInstanceNormalization
std::shared_ptr< base::Param > createOpParam(OpType op_type)
Create a base::Param object.
#define PARAM_COPY_TO(param_type)
#define PARAM_COPY(param_type)