From 13b7b8e2d2862ead89c7ae4a14ba9df8dce82a4a Mon Sep 17 00:00:00 2001 From: Jihoon Lee Date: Thu, 30 Jul 2020 11:16:46 +0900 Subject: [PATCH] Update setDataset / loadDataset When path is given and invalid, it should fail. This patch updates accordingly. **Self evaluation:** 1. Build test: [X]Passed [ ]Failed [ ]Skipped 2. Run test: [ ]Passed [ ]Failed [X]Skipped Signed-off-by: Jihoon Lee --- nntrainer/src/databuffer_file.cpp | 9 +++--- nntrainer/src/neuralnet.cpp | 51 ++++++++++++++++++------------- 2 files changed, 34 insertions(+), 26 deletions(-) diff --git a/nntrainer/src/databuffer_file.cpp b/nntrainer/src/databuffer_file.cpp index da0774df..a10ecad6 100644 --- a/nntrainer/src/databuffer_file.cpp +++ b/nntrainer/src/databuffer_file.cpp @@ -290,20 +290,19 @@ int DataBufferFromDataFile::setDataFile(std::string path, DataType type) { case DATA_VAL: { validation[type] = true; if (!data_file.good()) { - ml_logw("Warning: Cannot open validation data file. Cannot validate " + ml_loge("Error: Cannot open validation data file. Cannot validate " "training result"); validation[type] = false; - break; + return ML_ERROR_INVALID_PARAMETER; } val_name = path; } break; case DATA_TEST: { validation[type] = true; if (!data_file.good()) { - ml_logw( - "Warning: Cannot open test data file. Cannot test training result"); + ml_loge("Error: Cannot open test data file. Cannot test training result"); validation[type] = false; - break; + return ML_ERROR_INVALID_PARAMETER; } test_name = path; } break; diff --git a/nntrainer/src/neuralnet.cpp b/nntrainer/src/neuralnet.cpp index b89e136c..30fb4d0e 100644 --- a/nntrainer/src/neuralnet.cpp +++ b/nntrainer/src/neuralnet.cpp @@ -132,6 +132,7 @@ int NeuralNetwork::loadNetworkConfig(void *_ini) { return status; } +/// @fixme: 370 int NeuralNetwork::loadDatasetConfig(void *_ini) { int status = ML_ERROR_NONE; @@ -140,29 +141,37 @@ int NeuralNetwork::loadDatasetConfig(void *_ini) { if (iniparser_find_entry(ini, "DataSet:Tflite")) { ml_loge("Error: Tflite dataset is not yet implemented!"); return ML_ERROR_INVALID_PARAMETER; - } else { - data_buffer = std::make_shared(); - std::shared_ptr dbuffer = - std::static_pointer_cast(data_buffer); - - status = dbuffer->setDataFile( - iniparser_getstring(ini, "DataSet:TrainData", ""), DATA_TRAIN); - NN_INI_RETURN_STATUS(); - status = dbuffer->setDataFile( - iniparser_getstring(ini, "DataSet:ValidData", ""), DATA_VAL); - NN_INI_RETURN_STATUS(); - status = dbuffer->setDataFile( - iniparser_getstring(ini, "DataSet:TestData", ""), DATA_TEST); - NN_INI_RETURN_STATUS(); - status = dbuffer->setDataFile( - iniparser_getstring(ini, "DataSet:LabelData", ""), DATA_LABEL); - NN_INI_RETURN_STATUS(); - /// fixme: #299 - status = data_buffer->setBufSize( - iniparser_getint(ini, "DataSet:BufferSize", batch_size)); - NN_INI_RETURN_STATUS(); } + data_buffer = std::make_shared(); + std::shared_ptr dbuffer = + std::static_pointer_cast(data_buffer); + + std::function parse_and_set = + [&](const char *key, DataType dt, bool required) -> int { + const char *path = iniparser_getstring(ini, key, NULL); + + if (path == NULL) { + return required ? ML_ERROR_INVALID_PARAMETER : ML_ERROR_NONE; + } + + return dbuffer->setDataFile(path, dt); + }; + + status = parse_and_set("DataSet:TrainData", DATA_TRAIN, true); + NN_INI_RETURN_STATUS(); + status = parse_and_set("DataSet:ValidData", DATA_VAL, false); + NN_INI_RETURN_STATUS(); + status = parse_and_set("DataSet:TestData", DATA_TEST, false); + NN_INI_RETURN_STATUS(); + status = parse_and_set("Dataset:LabelData", DATA_LABEL, true); + NN_INI_RETURN_STATUS(); + + /// fixme: #299 + status = data_buffer->setBufSize( + iniparser_getint(ini, "DataSet:BufferSize", batch_size)); + NN_INI_RETURN_STATUS(); + return status; } -- 2.34.1