auto &[train_user_data, valid_user_data] = user_datas;
- auto dataset_train = ml::train::createDataset(
- ml::train::DatasetType::GENERATOR, trainData_cb, train_user_data.get());
- auto dataset_valid = ml::train::createDataset(
- ml::train::DatasetType::GENERATOR, validData_cb, valid_user_data.get());
+ std::unique_ptr<ml::train::Dataset> dataset_train;
+ try {
+ dataset_train = ml::train::createDataset(
+ ml::train::DatasetType::GENERATOR, trainData_cb, train_user_data.get());
+ } catch (const std::exception &e) {
+ std::cerr << "Error during create train dataset: " << e.what() << std::endl;
+ return 1;
+ }
+
+ std::unique_ptr<ml::train::Dataset> dataset_valid;
+ try {
+ dataset_valid = ml::train::createDataset(
+ ml::train::DatasetType::GENERATOR, validData_cb, valid_user_data.get());
+ } catch (const std::exception &e) {
+ std::cerr << "Error during create valid dataset: " << e.what() << std::endl;
+ return 1;
+ }
/**
* @brief Neural Network Create & Initialization
*/
- ModelHandle model = ml::train::createModel(ml::train::ModelType::NEURAL_NET);
+ ModelHandle model;
+ try {
+ model = ml::train::createModel(ml::train::ModelType::NEURAL_NET);
+ } catch (const std::exception &e) {
+ std::cerr << "Error during create model: " << e.what() << std::endl;
+ return 1;
+ }
try {
model->load(config, ml::train::ModelFormat::MODEL_FORMAT_INI);
- } catch (...) {
- std::cerr << "Error during loadFromConfig" << std::endl;
+ } catch (const std::exception &e) {
+ std::cerr << "Error during loadFromConfig: " << e.what() << std::endl;
return 1;
}
try {
model->compile();
+ } catch (const std::exception &e) {
+ std::cerr << "Error during compile: " << e.what() << std::endl;
+ return 1;
+ }
+
+ try {
model->initialize();
- } catch (...) {
- std::cerr << "Error during init" << std::endl;
+ } catch (const std::exception &e) {
+ std::cerr << "Error during ininitialize: " << e.what() << std::endl;
return 1;
}
try {
model->setDataset(ml::train::DatasetModeType::MODE_TRAIN,
std::move(dataset_train));
+ } catch (const std::exception &e) {
+ std::cerr << "Error during set train dataset: " << e.what() << std::endl;
+ return 1;
+ }
+
+ try {
model->setDataset(ml::train::DatasetModeType::MODE_VALID,
std::move(dataset_valid));
+ } catch (const std::exception &e) {
+ std::cerr << "Error during set valid dataset: " << e.what() << std::endl;
+ return 1;
+ }
+
+ try {
model->train();
training_loss = model->getTrainingLoss();
validation_loss = model->getValidationLoss();
last_batch_loss = model->getLoss();
- } catch (...) {
- std::cerr << "Error during train" << std::endl;
+ } catch (const std::exception &e) {
+ std::cerr << "Error during train: " << e.what() << std::endl;
return 1;
}
--- /dev/null
+// SPDX-License-Identifier: Apache-2.0
+/**
+ * Copyright (C) 2022 Hyeonseok Lee <hs89.lee@samsung.com>
+ *
+ * @file unittest_layers_zoneout_lstmcell.cpp
+ * @date 14 June 2022
+ * @brief ZoneoutLSTMCell Layer Test
+ * @see https://github.com/nnstreamer/nntrainer
+ * @author Hyeonseok Lee <hs89.lee@samsung.com>
+ * @bug No known bugs except for NYI items
+ */
+#include <tuple>
+
+#include <gtest/gtest.h>
+
+#include <layers_common_tests.h>
+#include <lstmcell.h>
+
+auto semantic_zoneout_lstmcell = LayerSemanticsParamType(
+ nntrainer::createLayer<nntrainer::LSTMCellLayer>,
+ nntrainer::LSTMCellLayer::type,
+ {"unit=1", "hidden_state_zoneout_rate=0.1", "cell_state_zoneout_rate=0.0"}, 0,
+ false, 3);
+
+INSTANTIATE_TEST_CASE_P(LSTMCell, LayerSemantics,
+ ::testing::Values(semantic_zoneout_lstmcell));
+
+auto zoneout_lstmcell_single_step = LayerGoldenTestParamType(
+ nntrainer::createLayer<nntrainer::LSTMCellLayer>,
+ {"unit=5", "integrate_bias=true", "hidden_state_zoneout_rate=0.1",
+ "cell_state_zoneout_rate=0.0"},
+ "3:1:1:7,3:1:1:5,3:1:1:5", "zoneout_lstmcell_single_step.nnlayergolden",
+ LayerGoldenTestParamOptions::DEFAULT);
+
+INSTANTIATE_TEST_CASE_P(LSTMCell, LayerGoldenTest,
+ ::testing::Values(zoneout_lstmcell_single_step));