[UTC][nntrainer][ACR-1579][Add generator tc] 39/242839/4
authorJihoon Lee <jhoon.it.lee@samsung.com>
Tue, 1 Sep 2020 07:01:56 +0000 (16:01 +0900)
committerJihoon Lee <jhoon.it.lee@samsung.com>
Wed, 2 Sep 2020 04:43:59 +0000 (13:43 +0900)
Add generator model run tc

Related feature: http://tizen.org/feature/machine_learning.training

Change-Id: I8115a7a549ebc7dddbea8501e930988d8cfaad96
Signed-off-by: Jihoon Lee <jhoon.it.lee@samsung.com>
src/utc/nntrainer/res/model.ini
src/utc/nntrainer/tct-nntrainer-core_mobile.h
src/utc/nntrainer/tct-nntrainer-core_tizeniot.h
src/utc/nntrainer/tct-nntrainer-core_tv.h
src/utc/nntrainer/tct-nntrainer-core_wearable.h
src/utc/nntrainer/utc-nntrainer-common.h
src/utc/nntrainer/utc-nntrainer-model.c

index d4cc31ad4fa727feb91dd84fb281ae13fe5ef5c8..794a33366b8eb6e20eec1db44944f5d692855a1d 100644 (file)
@@ -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
index 74cd8138283e99da7f73749743f93b4f9800146a..fdadae4ebc3a319584a98c091de89a45bf627217 100644 (file)
@@ -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},
index 480493961eefceaf92d8d9a11e6668046c32b608..6aa3e701342a97d1e2baf56830e526561fdce146 100644 (file)
@@ -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},
index 1d51e35884d72f506ad9ab88a8436870f0e95759..bc9a51339a00fab364b72243288a4265b09c9bec 100644 (file)
@@ -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},
index 8e99e66e3ad5275eff995f1f98789e01d9fdb8ed..342dd8474e22bd64486b9b8d7203c365311da07a 100644 (file)
@@ -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},
index bae565563dffa10e44499d93c35670515a6bd242..3711a9ba213511cf3b4191a078162a3636f3b8c5 100644 (file)
@@ -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;
 }
 
index 5051a68f165f47c6d3adc46f5b58b67f6352ce09..59e05504281a029cb6fb27e73a87ebe79768e002 100644 (file)
@@ -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