From: Jihoon Lee Date: Tue, 1 Sep 2020 07:01:56 +0000 (+0900) Subject: [UTC][nntrainer][ACR-1579][Add generator tc] X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b0cbd03ce0422345d12f59327da2affc99752365;p=test%2Ftct%2Fnative%2Fapi.git [UTC][nntrainer][ACR-1579][Add generator tc] Add generator model run tc Related feature: http://tizen.org/feature/machine_learning.training Change-Id: I8115a7a549ebc7dddbea8501e930988d8cfaad96 Signed-off-by: Jihoon Lee --- diff --git a/src/utc/nntrainer/res/model.ini b/src/utc/nntrainer/res/model.ini index d4cc31ad4..794a33366 100644 --- a/src/utc/nntrainer/res/model.ini +++ b/src/utc/nntrainer/res/model.ini @@ -33,5 +33,5 @@ Type = fully_connected Unit = 10 # Output Layer Dimension ( = Weight Width ) bias_initializer = zeros Activation = sigmoid # activation : sigmoid, softmax -Weight_Decay = l2norm -weight_Decay_Lambda = 0.005 +weight_regularizer = l2norm +weight_regularizer_constant = 0.005 diff --git a/src/utc/nntrainer/tct-nntrainer-core_mobile.h b/src/utc/nntrainer/tct-nntrainer-core_mobile.h index 74cd81382..fdadae4eb 100644 --- a/src/utc/nntrainer/tct-nntrainer-core_mobile.h +++ b/src/utc/nntrainer/tct-nntrainer-core_mobile.h @@ -73,7 +73,8 @@ extern int utc_nntrainer_model_get_summary_p(void); extern int utc_nntrainer_model_get_summary_n(void); extern int utc_nntrainer_model_compile_p(void); extern int utc_nntrainer_model_compile_n(void); -extern int utc_nntrainer_model_run_p(void); +extern int utc_nntrainer_model_run_p1(void); +extern int utc_nntrainer_model_run_p2(void); extern int utc_nntrainer_model_run_n(void); testcase tc_array[] = { @@ -120,7 +121,8 @@ testcase tc_array[] = { {"utc_nntrainer_model_get_summary_n", utc_nntrainer_model_get_summary_n, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_compile_p", utc_nntrainer_model_compile_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_compile_n", utc_nntrainer_model_compile_n, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, - {"utc_nntrainer_model_run_p", utc_nntrainer_model_run_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, + {"utc_nntrainer_model_run_p1", utc_nntrainer_model_run_p1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, + {"utc_nntrainer_model_run_p2", utc_nntrainer_model_run_p2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_run_n", utc_nntrainer_model_run_n, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {NULL, NULL}, diff --git a/src/utc/nntrainer/tct-nntrainer-core_tizeniot.h b/src/utc/nntrainer/tct-nntrainer-core_tizeniot.h index 480493961..6aa3e7013 100644 --- a/src/utc/nntrainer/tct-nntrainer-core_tizeniot.h +++ b/src/utc/nntrainer/tct-nntrainer-core_tizeniot.h @@ -73,7 +73,8 @@ extern int utc_nntrainer_model_get_summary_p(void); extern int utc_nntrainer_model_get_summary_n(void); extern int utc_nntrainer_model_compile_p(void); extern int utc_nntrainer_model_compile_n(void); -extern int utc_nntrainer_model_run_p(void); +extern int utc_nntrainer_model_run_p1(void); +extern int utc_nntrainer_model_run_p2(void); extern int utc_nntrainer_model_run_n(void); testcase tc_array[] = { @@ -120,7 +121,8 @@ testcase tc_array[] = { {"utc_nntrainer_model_get_summary_n", utc_nntrainer_model_get_summary_n, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_compile_p", utc_nntrainer_model_compile_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_compile_n", utc_nntrainer_model_compile_n, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, - {"utc_nntrainer_model_run_p", utc_nntrainer_model_run_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, + {"utc_nntrainer_model_run_p1", utc_nntrainer_model_run_p1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, + {"utc_nntrainer_model_run_p2", utc_nntrainer_model_run_p2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_run_n", utc_nntrainer_model_run_n, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {NULL, NULL}, diff --git a/src/utc/nntrainer/tct-nntrainer-core_tv.h b/src/utc/nntrainer/tct-nntrainer-core_tv.h index 1d51e3588..bc9a51339 100644 --- a/src/utc/nntrainer/tct-nntrainer-core_tv.h +++ b/src/utc/nntrainer/tct-nntrainer-core_tv.h @@ -73,7 +73,8 @@ extern int utc_nntrainer_model_get_summary_p(void); extern int utc_nntrainer_model_get_summary_n(void); extern int utc_nntrainer_model_compile_p(void); extern int utc_nntrainer_model_compile_n(void); -extern int utc_nntrainer_model_run_p(void); +extern int utc_nntrainer_model_run_p1(void); +extern int utc_nntrainer_model_run_p2(void); extern int utc_nntrainer_model_run_n(void); testcase tc_array[] = { @@ -120,7 +121,8 @@ testcase tc_array[] = { {"utc_nntrainer_model_get_summary_n", utc_nntrainer_model_get_summary_n, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_compile_p", utc_nntrainer_model_compile_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_compile_n", utc_nntrainer_model_compile_n, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, - {"utc_nntrainer_model_run_p", utc_nntrainer_model_run_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, + {"utc_nntrainer_model_run_p1", utc_nntrainer_model_run_p1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, + {"utc_nntrainer_model_run_p2", utc_nntrainer_model_run_p2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_run_n", utc_nntrainer_model_run_n, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {NULL, NULL}, diff --git a/src/utc/nntrainer/tct-nntrainer-core_wearable.h b/src/utc/nntrainer/tct-nntrainer-core_wearable.h index 8e99e66e3..342dd8474 100644 --- a/src/utc/nntrainer/tct-nntrainer-core_wearable.h +++ b/src/utc/nntrainer/tct-nntrainer-core_wearable.h @@ -73,7 +73,8 @@ extern int utc_nntrainer_model_get_summary_p(void); extern int utc_nntrainer_model_get_summary_n(void); extern int utc_nntrainer_model_compile_p(void); extern int utc_nntrainer_model_compile_n(void); -extern int utc_nntrainer_model_run_p(void); +extern int utc_nntrainer_model_run_p1(void); +extern int utc_nntrainer_model_run_p2(void); extern int utc_nntrainer_model_run_n(void); testcase tc_array[] = { @@ -120,7 +121,8 @@ testcase tc_array[] = { {"utc_nntrainer_model_get_summary_n", utc_nntrainer_model_get_summary_n, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_compile_p", utc_nntrainer_model_compile_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_compile_n", utc_nntrainer_model_compile_n, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, - {"utc_nntrainer_model_run_p", utc_nntrainer_model_run_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, + {"utc_nntrainer_model_run_p1", utc_nntrainer_model_run_p1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, + {"utc_nntrainer_model_run_p2", utc_nntrainer_model_run_p2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_run_n", utc_nntrainer_model_run_n, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {NULL, NULL}, diff --git a/src/utc/nntrainer/utc-nntrainer-common.h b/src/utc/nntrainer/utc-nntrainer-common.h index bae565563..3711a9ba2 100644 --- a/src/utc/nntrainer/utc-nntrainer-common.h +++ b/src/utc/nntrainer/utc-nntrainer-common.h @@ -34,8 +34,8 @@ #define TRAININGSET_PATH "trainingSet.dat" #define VALSET_PATH "trainingSet.dat" -#define BATCH_SIZE 32 -#define FEATURE_SIZE 62720 +#define BATCH_SIZE 9 +#define FEATURE_SIZE 100 #define NUM_CLASS 10 static bool train_supported; @@ -158,14 +158,15 @@ static int constant_generator_cb(float **outVec, float **outLabel, bool *last, for (i = 0; i < data_size; ++i) { - outVec[0][i] = 1; + outVec[0][i] = 0.0f; } - for(i = 0; i < BATCH_SIZE; ++i) { - outLabel[0][i] = 1; + outLabel[0][0] = 1.0f; + for(i = 0; i < NUM_CLASS - 1; ++i) { + outLabel[0][i] = 0.0f; } - if (count == 5){ + if (count == 10){ *last = true; count = 0; } else { @@ -173,6 +174,8 @@ static int constant_generator_cb(float **outVec, float **outLabel, bool *last, count++; } + LOG_I("generator called"); + return ML_ERROR_NONE; } diff --git a/src/utc/nntrainer/utc-nntrainer-model.c b/src/utc/nntrainer/utc-nntrainer-model.c index 5051a68f1..59e055042 100644 --- a/src/utc/nntrainer/utc-nntrainer-model.c +++ b/src/utc/nntrainer/utc-nntrainer-model.c @@ -35,15 +35,17 @@ void utc_nntrainer_model_startup(void) check_feature(); ml_train_layer_create(&layers[0], ML_TRAIN_LAYER_TYPE_INPUT); - ml_train_layer_set_property(layers[0], "input_shape=1:1:62720", + ml_train_layer_set_property(layers[0], "input_shape=1:1:100", "normalization=true", "bias_init_zero=true", NULL); ml_train_layer_create(&layers[1], ML_TRAIN_LAYER_TYPE_FC); ml_train_layer_set_property( - layers[1], "unit= 10", "activation=softmax", "bias_init_zero=true", - "weight_decay=l2norm", "weight_decay_lambda=0.005", - "weight_ini=xavier_uniform", "name=fc100", NULL); + layers[1], "unit=10", "activation=softmax", "bias_init_zero=true", + "weight_regularizer=l2norm", + "weight_regularizer_constant=0.005", + "weight_initializer=xavier_uniform", + "name=fc100", NULL); ml_train_optimizer_create(&adam, ML_TRAIN_OPTIMIZER_TYPE_ADAM); ml_train_optimizer_set_property( @@ -526,11 +528,11 @@ int utc_nntrainer_model_compile_n(void) } /** - * @function utc_nntrainer_model_run_p + * @function utc_nntrainer_model_run_p1 * @since_tizen 6.0 - * @description test for model run + * @description test for model run with file */ -int utc_nntrainer_model_run_p(void) +int utc_nntrainer_model_run_p1(void) { ml_train_model_construct_with_conf(conf_path, &model); @@ -551,6 +553,50 @@ int utc_nntrainer_model_run_p(void) return 0; } +/** + * @function utc_nntrainer_model_run_p2 + * @since_tizen 6.0 + * @description test for model run with generator dataset + */ +int utc_nntrainer_model_run_p2(void) +{ + ml_train_dataset_h dataset; + ml_train_optimizer_h optimizer; + + ml_train_model_construct(&model); + ml_train_dataset_create_with_generator(&dataset, constant_generator_cb, NULL, NULL); + + + ml_train_dataset_set_property(dataset, "buffer_size=9", NULL); + ml_train_model_set_dataset(model, dataset); + + ml_train_optimizer_create(&optimizer, ML_TRAIN_OPTIMIZER_TYPE_ADAM); + ml_train_optimizer_set_property( + optimizer, "learning_rate=0.0001", "decay_rate=0.96", "decay_steps=1000", + "beta1=0.9", "beta2=0.9999", "epsilon=1e-7", NULL); + + ml_train_model_set_optimizer(model, optimizer); + + ml_train_model_add_layer(model, layers[0]); + ml_train_model_add_layer(model, layers[1]); + + ml_train_model_compile(model, "loss=cross", "batch_size=9", NULL); + + status = ml_train_model_run(model, "epochs=1", NULL); + if (train_supported == false) + { + assert_eq(status, ML_ERROR_NOT_SUPPORTED); + } + else + { + assert_eq(status, ML_ERROR_NONE); + } + + ml_train_model_destroy(model); + + return 0; +} + /** * @function utc_nntrainer_model_run_n * @since_tizen 6.0