From 233bdf6028347fca7964289d35de59b74478b9e9 Mon Sep 17 00:00:00 2001 From: Jihoon Lee Date: Wed, 15 Sep 2021 20:52:01 +0900 Subject: [PATCH] [Fix] Svace issue and minor bugs **Changes proposed in this PR:** - implement save_ini_with_bin format - delete noexcept specifier in node exporter - ini interpreter skips newly reserved sections - Add member initializer in TfOpNode - fix unused warning in padding for under gcc 9 **Self evaluation:** 1. Build test: [X]Passed [ ]Failed [ ]Skipped 2. Run test: [X]Passed [ ]Failed [ ]Skipped Signed-off-by: Jihoon Lee --- nntrainer/compiler/ini_interpreter.cpp | 6 ++++++ nntrainer/compiler/tflite_opnode.cpp | 12 +++++++++++- nntrainer/layers/pooling2d_layer.cpp | 3 ++- nntrainer/models/model_loader.cpp | 2 +- nntrainer/models/neuralnet.cpp | 12 ++++++++++++ nntrainer/utils/node_exporter.cpp | 5 ++--- nntrainer/utils/node_exporter.h | 2 +- 7 files changed, 35 insertions(+), 7 deletions(-) diff --git a/nntrainer/compiler/ini_interpreter.cpp b/nntrainer/compiler/ini_interpreter.cpp index 45e19f2..140104a 100644 --- a/nntrainer/compiler/ini_interpreter.cpp +++ b/nntrainer/compiler/ini_interpreter.cpp @@ -38,6 +38,9 @@ static constexpr const char *UNKNOWN_STR = "UNKNOWN"; static constexpr const char *NONE_STR = "NONE"; static constexpr const char *MODEL_STR = "model"; static constexpr const char *DATASET_STR = "dataset"; +static constexpr const char *TRAINSET_STR = "train_set"; +static constexpr const char *VALIDSET_STR = "valid_set"; +static constexpr const char *TESTSET_STR = "test_set"; static constexpr const char *OPTIMIZER_STR = "optimizer"; namespace nntrainer { @@ -302,6 +305,9 @@ IniGraphInterpreter::deserialize(const std::string &in) { std::string sec_name(sec_name_); if (istrequal(sec_name, MODEL_STR) || istrequal(sec_name, DATASET_STR) || + istrequal(sec_name, TRAINSET_STR) || + istrequal(sec_name, VALIDSET_STR) || + istrequal(sec_name, TESTSET_STR) || istrequal(sec_name, OPTIMIZER_STR)) { /// dedicated sections so skip continue; diff --git a/nntrainer/compiler/tflite_opnode.cpp b/nntrainer/compiler/tflite_opnode.cpp index 48331f8..dfad200 100644 --- a/nntrainer/compiler/tflite_opnode.cpp +++ b/nntrainer/compiler/tflite_opnode.cpp @@ -17,7 +17,17 @@ namespace nntrainer { -TfOpNode::TfOpNode(){}; +TfOpNode::TfOpNode() : + inputs(), + outputs(), + weights(), + weight_transform(nullptr), + is_input(false), + is_output(false), + node_owned_variable(), + op_type(tflite::BuiltinOperator_ADD), + builtin_ops(), + builtin_option_type(tflite::BuiltinOptions_NONE){}; void TfOpNode::setLayerNode(const LayerNode &layer) { is_input = layer.getNumInputConnections() == 0; diff --git a/nntrainer/layers/pooling2d_layer.cpp b/nntrainer/layers/pooling2d_layer.cpp index 08b3a62..e2e03b0 100644 --- a/nntrainer/layers/pooling2d_layer.cpp +++ b/nntrainer/layers/pooling2d_layer.cpp @@ -159,7 +159,8 @@ void Pooling2DLayer::calcDerivative(RunLayerContext &context) { int height = in_dim.height(); int width = in_dim.width(); - auto [pt, pb, pl, pr] = padding; + auto pt = padding[0]; + auto pl = padding[2]; unsigned int p_height = pool_size[0]; unsigned int p_width = pool_size[1]; diff --git a/nntrainer/models/model_loader.cpp b/nntrainer/models/model_loader.cpp index 0622499..c2524fe 100644 --- a/nntrainer/models/model_loader.cpp +++ b/nntrainer/models/model_loader.cpp @@ -275,7 +275,7 @@ int ModelLoader::loadDatasetConfigIni(dictionary *ini, NeuralNetwork &model) { NN_RETURN_STATUS(); status = parse_buffer_section("valid_set", DatasetModeType::MODE_VALID); NN_RETURN_STATUS(); - status = parse_buffer_section("test", DatasetModeType::MODE_TEST); + status = parse_buffer_section("test_set", DatasetModeType::MODE_TEST); NN_RETURN_STATUS(); return status; diff --git a/nntrainer/models/neuralnet.cpp b/nntrainer/models/neuralnet.cpp index b971aa8..820d6a2 100644 --- a/nntrainer/models/neuralnet.cpp +++ b/nntrainer/models/neuralnet.cpp @@ -333,6 +333,18 @@ void NeuralNetwork::save(const std::string &file_path, case ml::train::ModelFormat::MODEL_FORMAT_INI: saveModelIni(file_path); break; + + case ml::train::ModelFormat::MODEL_FORMAT_INI_WITH_BIN: { + auto old_save_path = std::get(model_flex_props); + auto bin_file_name = + file_path.substr(0, file_path.find_last_of('.')) + ".bin"; + + std::get(model_flex_props).set(bin_file_name); + save(file_path, ml::train::ModelFormat::MODEL_FORMAT_INI); + save(bin_file_name, ml::train::ModelFormat::MODEL_FORMAT_BIN); + std::get(model_flex_props) = old_save_path; + break; + } default: throw nntrainer::exception::not_supported( "saving with given format is not supported yet"); diff --git a/nntrainer/utils/node_exporter.cpp b/nntrainer/utils/node_exporter.cpp index fc5c75c..66e2fe6 100644 --- a/nntrainer/utils/node_exporter.cpp +++ b/nntrainer/utils/node_exporter.cpp @@ -35,14 +35,13 @@ Exporter::~Exporter() = default; template <> std::unique_ptr>> -Exporter::getResult() noexcept { +Exporter::getResult() { return std::move(stored_result); } #ifdef ENABLE_TFLITE_INTERPRETER template <> -std::unique_ptr -Exporter::getResult() noexcept { +std::unique_ptr Exporter::getResult() { tf_node->finalize(); return std::move(tf_node); } diff --git a/nntrainer/utils/node_exporter.h b/nntrainer/utils/node_exporter.h index e2fded9..6e171c0 100644 --- a/nntrainer/utils/node_exporter.h +++ b/nntrainer/utils/node_exporter.h @@ -160,7 +160,7 @@ public: */ template ::type> - std::unique_ptr getResult() noexcept; + std::unique_ptr getResult(); private: /** -- 2.7.4