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)
238 template <
typename T>
240 virtual std::shared_ptr<base::Param> createOpParam(
OpType type) {
241 return std::make_shared<T>();
250 extern NNDEPLOY_CC_API std::map<OpType, std::shared_ptr<OpParamCreator>> &
258 template <
typename T>
275 #define REGISTER_OP_PARAM_IMPLEMENTION(op_type, op_param_class) \
276 TypeOpParamRegister<TypeOpParamCreator<op_param_class>> \
277 g_##op_type##_##op_param_class##_register(op_type);
309 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
310 json.AddMember(
"epsilon_", epsilon_, allocator);
311 json.AddMember(
"momentum_", momentum_, allocator);
312 json.AddMember(
"training_mode_", training_mode_, allocator);
317 if (json.HasMember(
"epsilon_")) {
318 epsilon_ = json[
"epsilon_"].GetFloat();
323 if (json.HasMember(
"momentum_")) {
324 momentum_ = json[
"momentum_"].GetFloat();
329 if (json.HasMember(
"training_mode_")) {
330 training_mode_ = json[
"training_mode_"].GetInt();
340 float epsilon_ = 1e-05f;
343 float momentum_ = 0.9f;
344 int training_mode_ = 0;
357 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
358 json.AddMember(
"axis_",
axis_, allocator);
363 if (json.HasMember(
"axis_")) {
364 axis_ = json[
"axis_"].GetInt();
386 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
387 json.AddMember(
"transposeA_",
transposeA_, allocator);
388 json.AddMember(
"transposeB_",
transposeB_, allocator);
393 if (json.HasMember(
"transposeA_")) {
398 if (json.HasMember(
"transposeB_")) {
423 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
424 json.AddMember(
"auto_pad_", rapidjson::Value(auto_pad_.c_str(), allocator),
426 json.AddMember(
"dilations_", rapidjson::Value(rapidjson::kArrayType),
428 for (
size_t i = 0; i < dilations_.size(); ++i) {
429 json[
"dilations_"].PushBack(dilations_[i], allocator);
431 json.AddMember(
"group_", group_, allocator);
432 json.AddMember(
"kernel_shape_", rapidjson::Value(rapidjson::kArrayType),
434 for (
size_t i = 0; i < kernel_shape_.size(); ++i) {
435 json[
"kernel_shape_"].PushBack(kernel_shape_[i], allocator);
437 json.AddMember(
"pads_", rapidjson::Value(rapidjson::kArrayType), allocator);
438 for (
size_t i = 0; i < pads_.size(); ++i) {
439 json[
"pads_"].PushBack(pads_[i], allocator);
441 json.AddMember(
"strides_", rapidjson::Value(rapidjson::kArrayType),
443 for (
size_t i = 0; i < strides_.size(); ++i) {
444 json[
"strides_"].PushBack(strides_[i], allocator);
448 rapidjson::Value(
opTypeToString(activate_op_).c_str(), allocator),
450 if (activate_op_ !=
kOpTypeNone && fused_op_param_ !=
nullptr) {
451 rapidjson::Value op_desc_json(rapidjson::kObjectType);
452 fused_op_param_->serialize(op_desc_json, allocator);
453 json.AddMember(
"fused_op_param_", op_desc_json, allocator);
459 if (json.HasMember(
"auto_pad_")) {
460 auto_pad_ = json[
"auto_pad_"].GetString();
462 auto_pad_ =
"NOTSET";
465 if (json.HasMember(
"dilations_")) {
467 for (
size_t i = 0; i < json[
"dilations_"].Size(); ++i) {
468 dilations_.push_back(json[
"dilations_"][i].GetInt());
474 if (json.HasMember(
"group_")) {
475 group_ = json[
"group_"].GetInt();
480 if (json.HasMember(
"kernel_shape_")) {
481 kernel_shape_.clear();
482 for (
size_t i = 0; i < json[
"kernel_shape_"].Size(); ++i) {
483 kernel_shape_.push_back(json[
"kernel_shape_"][i].GetInt());
486 kernel_shape_.clear();
489 if (json.HasMember(
"pads_")) {
491 for (
size_t i = 0; i < json[
"pads_"].Size(); ++i) {
492 pads_.push_back(json[
"pads_"][i].GetInt());
495 pads_ = {0, 0, 0, 0};
498 if (json.HasMember(
"strides_")) {
500 for (
size_t i = 0; i < json[
"strides_"].Size(); ++i) {
501 strides_.push_back(json[
"strides_"][i].GetInt());
507 if (json.HasMember(
"activate_op_")) {
510 if (json.HasMember(
"fused_op_param_")) {
511 fused_op_param_->deserialize(json[
"fused_op_param_"]);
522 std::string auto_pad_ =
"NOTSET";
524 std::vector<int> dilations_ = {1, 1};
530 std::vector<int> pads_ = {0, 0, 0, 0};
532 std::vector<int> strides_ = {1, 1};
537 std::shared_ptr<base::Param> fused_op_param_ =
nullptr;
550 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
551 json.AddMember(
"auto_pad_", rapidjson::Value(auto_pad_.c_str(), allocator),
553 json.AddMember(
"ceil_mode_", ceil_mode_, allocator);
554 rapidjson::Value dilations_array(rapidjson::kArrayType);
555 for (
size_t i = 0; i < dilations_.size(); ++i) {
556 dilations_array.PushBack(dilations_[i], allocator);
558 json.AddMember(
"dilations_", dilations_array, allocator);
560 rapidjson::Value kernel_shape_array(rapidjson::kArrayType);
561 for (
size_t i = 0; i < kernel_shape_.size(); ++i) {
562 kernel_shape_array.PushBack(kernel_shape_[i], allocator);
564 json.AddMember(
"kernel_shape_", kernel_shape_array, allocator);
566 rapidjson::Value pads_array(rapidjson::kArrayType);
567 for (
size_t i = 0; i < pads_.size(); ++i) {
568 pads_array.PushBack(pads_[i], allocator);
570 json.AddMember(
"pads_", pads_array, allocator);
572 json.AddMember(
"storage_order_", storage_order_, allocator);
574 rapidjson::Value strides_array(rapidjson::kArrayType);
575 for (
size_t i = 0; i < strides_.size(); ++i) {
576 strides_array.PushBack(strides_[i], allocator);
578 json.AddMember(
"strides_", strides_array, allocator);
584 if (json.HasMember(
"auto_pad_")) {
585 auto_pad_ = json[
"auto_pad_"].GetString();
587 auto_pad_ =
"NOTSET";
590 if (json.HasMember(
"ceil_mode_")) {
591 ceil_mode_ = json[
"ceil_mode_"].GetInt();
596 if (json.HasMember(
"dilations_")) {
598 for (
size_t i = 0; i < json[
"dilations_"].Size(); ++i) {
599 dilations_.push_back(json[
"dilations_"][i].GetInt());
605 if (json.HasMember(
"kernel_shape_")) {
606 kernel_shape_.clear();
607 for (
size_t i = 0; i < json[
"kernel_shape_"].Size(); ++i) {
608 kernel_shape_.push_back(json[
"kernel_shape_"][i].GetInt());
611 kernel_shape_.clear();
614 if (json.HasMember(
"pads_")) {
616 for (
size_t i = 0; i < json[
"pads_"].Size(); ++i) {
617 pads_.push_back(json[
"pads_"][i].GetInt());
620 pads_ = {0, 0, 0, 0};
623 if (json.HasMember(
"storage_order_")) {
624 storage_order_ = json[
"storage_order_"].GetInt();
629 if (json.HasMember(
"strides_")) {
631 for (
size_t i = 0; i < json[
"strides_"].Size(); ++i) {
632 strides_.push_back(json[
"strides_"][i].GetInt());
642 std::string auto_pad_ =
"NOTSET";
644 std::vector<int> dilations_ = {1, 1};
646 std::vector<int> pads_ = {0, 0, 0, 0};
647 int storage_order_ = 0;
648 std::vector<int> strides_ = {1, 1};
662 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
663 json.AddMember(
"allowzero_", allowzero_, allocator);
668 if (json.HasMember(
"allowzero_")) {
669 allowzero_ = json[
"allowzero_"].GetInt();
692 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
693 json.AddMember(
"antialias_", antialias_, allocator);
694 json.AddMember(
"axes_", axes_, allocator);
696 "coordinate_transformation_mode_",
697 rapidjson::Value(coordinate_transformation_mode_.c_str(), allocator),
699 json.AddMember(
"cubic_coeff_a_", cubic_coeff_a_, allocator);
700 json.AddMember(
"exclude_outside_", exclude_outside_, allocator);
701 json.AddMember(
"extrapolation_value_", extrapolation_value_, allocator);
703 "keep_aspect_ratio_policy_",
704 rapidjson::Value(keep_aspect_ratio_policy_.c_str(), allocator),
706 json.AddMember(
"mode_", rapidjson::Value(mode_.c_str(), allocator),
708 json.AddMember(
"nearest_mode_",
709 rapidjson::Value(nearest_mode_.c_str(), allocator),
715 if (json.HasMember(
"antialias_")) {
716 antialias_ = json[
"antialias_"].GetInt();
721 if (json.HasMember(
"axes_")) {
722 axes_ = json[
"axes_"].GetInt();
727 if (json.HasMember(
"coordinate_transformation_mode_")) {
728 coordinate_transformation_mode_ =
729 json[
"coordinate_transformation_mode_"].GetString();
731 coordinate_transformation_mode_ =
"half_pixel";
734 if (json.HasMember(
"cubic_coeff_a_")) {
735 cubic_coeff_a_ = json[
"cubic_coeff_a_"].GetFloat();
737 cubic_coeff_a_ = -0.75;
740 if (json.HasMember(
"exclude_outside_")) {
741 exclude_outside_ = json[
"exclude_outside_"].GetInt();
743 exclude_outside_ = 0;
746 if (json.HasMember(
"extrapolation_value_")) {
747 extrapolation_value_ = json[
"extrapolation_value_"].GetFloat();
749 extrapolation_value_ = -0.0;
752 if (json.HasMember(
"keep_aspect_ratio_policy_")) {
753 keep_aspect_ratio_policy_ = json[
"keep_aspect_ratio_policy_"].GetString();
755 keep_aspect_ratio_policy_ =
"stretch";
758 if (json.HasMember(
"mode_")) {
759 mode_ = json[
"mode_"].GetString();
764 if (json.HasMember(
"nearest_mode_")) {
765 nearest_mode_ = json[
"nearest_mode_"].GetString();
767 nearest_mode_ =
"round_prefer_floor";
776 std::string coordinate_transformation_mode_ =
"half_pixel";
777 float cubic_coeff_a_ = -0.75;
778 int exclude_outside_ = 0;
779 float extrapolation_value_ = -0.0;
780 std::string keep_aspect_ratio_policy_ =
"stretch";
781 std::string mode_ =
"nearest";
782 std::string nearest_mode_ =
"round_prefer_floor";
796 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
797 json.AddMember(
"axis_", axis_, allocator);
802 if (json.HasMember(
"axis_")) {
803 axis_ = json[
"axis_"].GetInt();
826 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
827 json.AddMember(
"axis_", axis_, allocator);
828 json.AddMember(
"num_outputs_", num_outputs_, allocator);
833 if (json.HasMember(
"axis_")) {
834 axis_ = json[
"axis_"].GetInt();
839 if (json.HasMember(
"num_outputs_")) {
840 num_outputs_ = json[
"num_outputs_"].GetInt();
842 num_outputs_ = INT_MAX;
850 int num_outputs_ = INT_MAX;
864 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
865 rapidjson::Value permArray(rapidjson::kArrayType);
866 for (
size_t i = 0; i < perm_.size(); ++i) {
867 permArray.PushBack(perm_[i], allocator);
869 json.AddMember(
"perm_", permArray, allocator);
874 if (json.HasMember(
"perm_")) {
876 for (
size_t i = 0; i < json[
"perm_"].Size(); ++i) {
877 perm_.push_back(json[
"perm_"][i].GetInt());
900 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
901 json.AddMember(
"eps_", eps_, allocator);
902 json.AddMember(
"is_last_", is_last_, allocator);
907 if (json.HasMember(
"eps_")) {
908 eps_ = json[
"eps_"].GetFloat();
913 if (json.HasMember(
"is_last_")) {
914 is_last_ = json[
"is_last_"].GetBool();
924 bool is_last_ =
false;
937 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
938 json.AddMember(
"axis_", axis_, allocator);
943 if (json.HasMember(
"axis_")) {
944 axis_ = json[
"axis_"].GetInt();
966 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
985 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
986 json.AddMember(
"alpha_", alpha_, allocator);
987 json.AddMember(
"beta_", beta_, allocator);
988 json.AddMember(
"trans_a_", trans_a_, allocator);
989 json.AddMember(
"trans_b_", trans_b_, allocator);
994 if (json.HasMember(
"alpha_")) {
995 alpha_ = json[
"alpha_"].GetFloat();
1000 if (json.HasMember(
"beta_")) {
1001 beta_ = json[
"beta_"].GetFloat();
1006 if (json.HasMember(
"trans_a_")) {
1007 trans_a_ = json[
"trans_a_"].GetInt();
1012 if (json.HasMember(
"trans_b_")) {
1013 trans_b_ = json[
"trans_b_"].GetInt();
1038 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1039 json.AddMember(
"axis_", axis_, allocator);
1040 json.AddMember(
"saturate_", saturate_, allocator);
1045 if (json.HasMember(
"axis_")) {
1046 axis_ = json[
"axis_"].GetInt();
1051 if (json.HasMember(
"saturate_")) {
1052 saturate_ = json[
"saturate_"].GetInt();
1075 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1076 json.AddMember(
"axis_", axis_, allocator);
1081 if (json.HasMember(
"axis_")) {
1082 axis_ = json[
"axis_"].GetInt();
1105 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1106 json.AddMember(
"auto_pad_", rapidjson::Value(auto_pad_.c_str(), allocator),
1108 json.AddMember(
"dilations_", rapidjson::Value(rapidjson::kArrayType),
1110 for (
size_t i = 0; i < dilations_.size(); ++i) {
1111 json[
"dilations_"].PushBack(dilations_[i], allocator);
1113 json.AddMember(
"group_", group_, allocator);
1114 json.AddMember(
"kernel_shape_", rapidjson::Value(rapidjson::kArrayType),
1116 for (
size_t i = 0; i < kernel_shape_.size(); ++i) {
1117 json[
"kernel_shape_"].PushBack(kernel_shape_[i], allocator);
1119 json.AddMember(
"pads_", rapidjson::Value(rapidjson::kArrayType), allocator);
1120 for (
size_t i = 0; i < pads_.size(); ++i) {
1121 json[
"pads_"].PushBack(pads_[i], allocator);
1123 json.AddMember(
"strides_", rapidjson::Value(rapidjson::kArrayType),
1125 for (
size_t i = 0; i < strides_.size(); ++i) {
1126 json[
"strides_"].PushBack(strides_[i], allocator);
1133 if (json.HasMember(
"auto_pad_")) {
1134 auto_pad_ = json[
"auto_pad_"].GetString();
1136 auto_pad_ =
"NOTSET";
1139 if (json.HasMember(
"dilations_")) {
1141 for (
size_t i = 0; i < json[
"dilations_"].Size(); ++i) {
1142 dilations_.push_back(json[
"dilations_"][i].GetInt());
1145 dilations_ = {1, 1};
1148 if (json.HasMember(
"group_")) {
1149 group_ = json[
"group_"].GetInt();
1154 if (json.HasMember(
"kernel_shape_")) {
1155 kernel_shape_.clear();
1156 for (
size_t i = 0; i < json[
"kernel_shape_"].Size(); ++i) {
1157 kernel_shape_.push_back(json[
"kernel_shape_"][i].GetInt());
1160 kernel_shape_.clear();
1163 if (json.HasMember(
"pads_")) {
1165 for (
size_t i = 0; i < json[
"pads_"].Size(); ++i) {
1166 pads_.push_back(json[
"pads_"][i].GetInt());
1169 pads_ = {0, 0, 0, 0};
1172 if (json.HasMember(
"strides_")) {
1174 for (
size_t i = 0; i < json[
"strides_"].Size(); ++i) {
1175 strides_.push_back(json[
"strides_"][i].GetInt());
1186 std::string auto_pad_ =
"NOTSET";
1188 std::vector<int> dilations_ = {1, 1};
1194 std::vector<int> pads_ = {0, 0, 0, 0};
1196 std::vector<int> strides_ = {1, 1};
1210 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1211 json.AddMember(
"auto_pad_", rapidjson::Value(auto_pad_.c_str(), allocator),
1213 json.AddMember(
"ceil_mode_", ceil_mode_, allocator);
1214 json.AddMember(
"count_include_pad_",
1215 rapidjson::Value(count_include_pad_.c_str(), allocator),
1217 json.AddMember(
"dilations_", rapidjson::Value(rapidjson::kArrayType),
1219 for (
size_t i = 0; i < dilations_.size(); ++i) {
1220 json[
"dilations_"].PushBack(dilations_[i], allocator);
1222 json.AddMember(
"kernel_shape_", rapidjson::Value(rapidjson::kArrayType),
1224 for (
size_t i = 0; i < kernel_shape_.size(); ++i) {
1225 json[
"kernel_shape_"].PushBack(kernel_shape_[i], allocator);
1227 json.AddMember(
"pads_", rapidjson::Value(rapidjson::kArrayType), allocator);
1228 for (
size_t i = 0; i < pads_.size(); ++i) {
1229 json[
"pads_"].PushBack(pads_[i], allocator);
1231 json.AddMember(
"strides_", rapidjson::Value(rapidjson::kArrayType),
1233 for (
size_t i = 0; i < strides_.size(); ++i) {
1234 json[
"strides_"].PushBack(strides_[i], allocator);
1241 if (json.HasMember(
"auto_pad_")) {
1242 auto_pad_ = json[
"auto_pad_"].GetString();
1244 auto_pad_ =
"NOTSET";
1247 if (json.HasMember(
"ceil_mode_")) {
1248 ceil_mode_ = json[
"ceil_mode_"].GetInt();
1253 if (json.HasMember(
"count_include_pad_")) {
1254 count_include_pad_ = json[
"count_include_pad_"].GetString();
1256 count_include_pad_ =
"EXCLUDE";
1259 if (json.HasMember(
"dilations_")) {
1261 for (
size_t i = 0; i < json[
"dilations_"].Size(); ++i) {
1262 dilations_.push_back(json[
"dilations_"][i].GetInt());
1265 dilations_ = {1, 1};
1268 if (json.HasMember(
"kernel_shape_")) {
1269 kernel_shape_.clear();
1270 for (
size_t i = 0; i < json[
"kernel_shape_"].Size(); ++i) {
1271 kernel_shape_.push_back(json[
"kernel_shape_"][i].GetInt());
1274 kernel_shape_.clear();
1277 if (json.HasMember(
"pads_")) {
1279 for (
size_t i = 0; i < json[
"pads_"].Size(); ++i) {
1280 pads_.push_back(json[
"pads_"][i].GetInt());
1283 pads_ = {0, 0, 0, 0};
1286 if (json.HasMember(
"strides_")) {
1288 for (
size_t i = 0; i < json[
"strides_"].Size(); ++i) {
1289 strides_.push_back(json[
"strides_"][i].GetInt());
1300 std::string auto_pad_ =
"NOTSET";
1304 std::string count_include_pad_ =
"EXCLUDE";
1306 std::vector<int> dilations_ = {1, 1};
1310 std::vector<int> pads_ = {0, 0, 0, 0};
1312 std::vector<int> strides_ = {1, 1};
1325 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1326 json.AddMember(
"saturate_", saturate_, allocator);
1327 json.AddMember(
"to_", rapidjson::Value(rapidjson::kArrayType), allocator);
1328 json[
"to_"].PushBack(
static_cast<int32_t
>(to_.code_), allocator);
1329 json[
"to_"].PushBack(
static_cast<int32_t
>(to_.bits_), allocator);
1330 json[
"to_"].PushBack(
static_cast<int32_t
>(to_.lanes_), allocator);
1335 if (json.HasMember(
"saturate_")) {
1336 saturate_ = json[
"saturate_"].GetInt();
1341 if (json.HasMember(
"to_")) {
1342 to_.code_ = json[
"to_"][0].GetInt();
1343 to_.bits_ = json[
"to_"][1].GetInt();
1344 to_.lanes_ = json[
"to_"][2].GetInt();
1368 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1369 json.AddMember(
"axes_", axes_, allocator);
1374 if (json.HasMember(
"axes_")) {
1375 axes_ = json[
"axes_"].GetInt();
1396 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1397 json.AddMember(
"axis_", axis_, allocator);
1402 if (json.HasMember(
"axis_")) {
1403 axis_ = json[
"axis_"].GetInt();
1424 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1425 json.AddMember(
"keepdims_", keepdims_, allocator);
1426 json.AddMember(
"noop_with_empty_axes_", noop_with_empty_axes_, allocator);
1431 if (json.HasMember(
"keepdims_")) {
1432 keepdims_ = json[
"keepdims_"].GetInt();
1437 if (json.HasMember(
"noop_with_empty_axes_")) {
1438 noop_with_empty_axes_ = json[
"noop_with_empty_axes_"].GetInt();
1440 noop_with_empty_axes_ = 0;
1448 int noop_with_empty_axes_ = 0;
1461 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1462 json.AddMember(
"keepdims_", keepdims_, allocator);
1463 json.AddMember(
"noop_with_empty_axes_", noop_with_empty_axes_, allocator);
1468 if (json.HasMember(
"keepdims_")) {
1469 keepdims_ = json[
"keepdims_"].GetInt();
1474 if (json.HasMember(
"noop_with_empty_axes_")) {
1475 noop_with_empty_axes_ = json[
"noop_with_empty_axes_"].GetInt();
1477 noop_with_empty_axes_ = 0;
1485 int noop_with_empty_axes_ = 0;
1498 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1499 json.AddMember(
"keepdims_", keepdims_, allocator);
1500 json.AddMember(
"noop_with_empty_axes_", noop_with_empty_axes_, allocator);
1505 if (json.HasMember(
"keepdims_")) {
1506 keepdims_ = json[
"keepdims_"].GetInt();
1511 if (json.HasMember(
"noop_with_empty_axes_")) {
1512 noop_with_empty_axes_ = json[
"noop_with_empty_axes_"].GetInt();
1514 noop_with_empty_axes_ = 0;
1522 int noop_with_empty_axes_ = 0;
1535 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1536 json.AddMember(
"keepdims_", keepdims_, allocator);
1537 json.AddMember(
"noop_with_empty_axes_", noop_with_empty_axes_, allocator);
1542 if (json.HasMember(
"keepdims_")) {
1543 keepdims_ = json[
"keepdims_"].GetInt();
1548 if (json.HasMember(
"noop_with_empty_axes_")) {
1549 noop_with_empty_axes_ = json[
"noop_with_empty_axes_"].GetInt();
1551 noop_with_empty_axes_ = 0;
1559 int noop_with_empty_axes_ = 0;
1572 rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) {
1573 json.AddMember(
"start_", start_, allocator);
1574 json.AddMember(
"end_", end_, allocator);
1579 if (json.HasMember(
"start_")) {
1580 start_ = json[
"start_"].GetInt();
1585 if (json.HasMember(
"end_")) {
1586 end_ = json[
"end_"].GetInt();
1609 rapidjson::Document::AllocatorType &allocator) {
1610 json.AddMember(
"value_", value_, allocator);
1611 json.AddMember(
"datatype_", rapidjson::Value(rapidjson::kArrayType),
1613 json[
"datatype_"].PushBack(
static_cast<int32_t
>(datatype_.code_),
1615 json[
"datatype_"].PushBack(
static_cast<int32_t
>(datatype_.bits_),
1617 json[
"datatype_"].PushBack(
static_cast<int32_t
>(datatype_.lanes_),
1623 if (json.HasMember(
"value_")) {
1624 value_ = json[
"value_"].GetFloat();
1629 if (json.HasMember(
"datatype_")) {
1630 datatype_.code_ = json[
"datatype_"][0].GetInt();
1631 datatype_.bits_ = json[
"datatype_"][1].GetInt();
1632 datatype_.lanes_ = json[
"datatype_"][2].GetInt();
1641 float value_ = 0.0f;
1650 #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)
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
@ 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)