ml_train_model_add_layer
ml_train_model_set_optimizer
ml_train_model_set_dataset
+ml_train_model_get_input_tensors_info
+ml_train_model_get_output_tensors_info
ml_train_layer_create
ml_train_layer_set_property
ml_train_layer_destroy
extern int utc_nntrainer_layer_set_property_concat_n(void);
extern int utc_nntrainer_layer_set_property_multiout_p(void);
extern int utc_nntrainer_layer_set_property_multiout_n(void);
+extern int utc_nntrainer_model_get_input_tensors_info_p(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n1(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n2(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n3(void);
+extern int utc_nntrainer_model_get_output_tensors_info_p(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n1(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n2(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n3(void);
testcase tc_array[] = {
// layer tcs
{"utc_nntrainer_layer_set_property_concat_n", utc_nntrainer_layer_set_property_concat_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
{"utc_nntrainer_layer_set_property_multiout_p", utc_nntrainer_layer_set_property_multiout_p, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
{"utc_nntrainer_layer_set_property_multiout_n", utc_nntrainer_layer_set_property_multiout_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
+ {"utc_nntrainer_model_get_input_tensors_info_p", utc_nntrainer_model_get_input_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_input_tensors_info_n1", utc_nntrainer_model_get_input_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_input_tensors_info_n2", utc_nntrainer_model_get_input_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_input_tensors_info_n3", utc_nntrainer_model_get_input_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_output_tensors_info_p", utc_nntrainer_model_get_output_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_output_tensors_info_n1", utc_nntrainer_model_get_output_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_output_tensors_info_n2", utc_nntrainer_model_get_output_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_output_tensors_info_n3", utc_nntrainer_model_get_output_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
{NULL, NULL},
};
extern int utc_nntrainer_layer_set_property_concat_n(void);
extern int utc_nntrainer_layer_set_property_multiout_p(void);
extern int utc_nntrainer_layer_set_property_multiout_n(void);
+extern int utc_nntrainer_model_get_input_tensors_info_p(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n1(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n2(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n3(void);
+extern int utc_nntrainer_model_get_output_tensors_info_p(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n1(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n2(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n3(void);
testcase tc_array[] = {
// layer tcs
{"utc_nntrainer_layer_set_property_concat_n", utc_nntrainer_layer_set_property_concat_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
{"utc_nntrainer_layer_set_property_multiout_p", utc_nntrainer_layer_set_property_multiout_p, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
{"utc_nntrainer_layer_set_property_multiout_n", utc_nntrainer_layer_set_property_multiout_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
+ {"utc_nntrainer_model_get_input_tensors_info_p", utc_nntrainer_model_get_input_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_input_tensors_info_n1", utc_nntrainer_model_get_input_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_input_tensors_info_n2", utc_nntrainer_model_get_input_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_input_tensors_info_n3", utc_nntrainer_model_get_input_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_output_tensors_info_p", utc_nntrainer_model_get_output_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_output_tensors_info_n1", utc_nntrainer_model_get_output_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_output_tensors_info_n2", utc_nntrainer_model_get_output_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_output_tensors_info_n3", utc_nntrainer_model_get_output_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
{NULL, NULL},
};
extern int utc_nntrainer_layer_set_property_concat_n(void);
extern int utc_nntrainer_layer_set_property_multiout_p(void);
extern int utc_nntrainer_layer_set_property_multiout_n(void);
+extern int utc_nntrainer_model_get_input_tensors_info_p(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n1(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n2(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n3(void);
+extern int utc_nntrainer_model_get_output_tensors_info_p(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n1(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n2(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n3(void);
testcase tc_array[] = {
// layer tcs
{"utc_nntrainer_layer_set_property_concat_n", utc_nntrainer_layer_set_property_concat_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
{"utc_nntrainer_layer_set_property_multiout_p", utc_nntrainer_layer_set_property_multiout_p, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
{"utc_nntrainer_layer_set_property_multiout_n", utc_nntrainer_layer_set_property_multiout_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
+ {"utc_nntrainer_model_get_input_tensors_info_p", utc_nntrainer_model_get_input_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_input_tensors_info_n1", utc_nntrainer_model_get_input_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_input_tensors_info_n2", utc_nntrainer_model_get_input_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_input_tensors_info_n3", utc_nntrainer_model_get_input_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_output_tensors_info_p", utc_nntrainer_model_get_output_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_output_tensors_info_n1", utc_nntrainer_model_get_output_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_output_tensors_info_n2", utc_nntrainer_model_get_output_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_output_tensors_info_n3", utc_nntrainer_model_get_output_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
{NULL, NULL},
};
extern int utc_nntrainer_layer_set_property_concat_n(void);
extern int utc_nntrainer_layer_set_property_multiout_p(void);
extern int utc_nntrainer_layer_set_property_multiout_n(void);
+extern int utc_nntrainer_model_get_input_tensors_info_p(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n1(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n2(void);
+extern int utc_nntrainer_model_get_input_tensors_info_n3(void);
+extern int utc_nntrainer_model_get_output_tensors_info_p(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n1(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n2(void);
+extern int utc_nntrainer_model_get_output_tensors_info_n3(void);
testcase tc_array[] = {
// layer tcs
{"utc_nntrainer_layer_set_property_concat_n", utc_nntrainer_layer_set_property_concat_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
{"utc_nntrainer_layer_set_property_multiout_p", utc_nntrainer_layer_set_property_multiout_p, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
{"utc_nntrainer_layer_set_property_multiout_n", utc_nntrainer_layer_set_property_multiout_n, utc_nntrainer_layer_startup, utc_nntrainer_layer_cleanup},
+ {"utc_nntrainer_model_get_input_tensors_info_p", utc_nntrainer_model_get_input_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_input_tensors_info_n1", utc_nntrainer_model_get_input_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_input_tensors_info_n2", utc_nntrainer_model_get_input_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_input_tensors_info_n3", utc_nntrainer_model_get_input_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_output_tensors_info_p", utc_nntrainer_model_get_output_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_output_tensors_info_n1", utc_nntrainer_model_get_output_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_output_tensors_info_n2", utc_nntrainer_model_get_output_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
+ {"utc_nntrainer_model_get_output_tensors_info_n3", utc_nntrainer_model_get_output_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup},
{NULL, NULL},
};
static ml_train_layer_h layers[2];
static ml_train_optimizer_h adam;
static ml_train_dataset_h dataset;
+static ml_tensors_info_h input_info, output_info;
/**
* @function utc_nntrainer_model_startup
return 0;
}
+
+/**
+ * @function utc_nntrainer_model_get_input_tensors_info_p
+ * @since_tizen 6.5
+ * @description test for get info of model's input tensors
+ */
+int utc_nntrainer_model_get_input_tensors_info_p(void)
+{
+ unsigned int input_count;
+ unsigned int input_dim_expected[4] = {2, 1, 1, 1280};
+ unsigned int dim[4];
+
+ ml_train_model_construct_with_conf(conf_path, &model);
+ ml_train_model_compile(model, NULL);
+
+ status = ml_train_model_get_input_tensors_info(model, &input_info);
+ if (train_supported == false)
+ {
+ assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+ }
+ else
+ {
+ assert_eq(status, ML_ERROR_NONE);
+ }
+
+ status = ml_tensors_info_get_count(input_info, &input_count);
+ if (train_supported == false)
+ {
+ assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+ }
+ else
+ {
+ assert_eq(status, ML_ERROR_NONE);
+ assert_eq(input_count, 1ul);
+ }
+
+ status = ml_tensors_info_get_tensor_dimension(input_info, 0, dim);
+ if (train_supported == false)
+ {
+ assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+ }
+ else
+ {
+ assert_eq(status, ML_ERROR_NONE);
+ for (unsigned int i = 0; i < 4; ++i) {
+ assert_eq(dim[i], input_dim_expected[i]);
+ }
+ }
+
+ ml_tensors_info_destroy(input_info);
+ ml_train_model_destroy(model);
+
+ return 0;
+}
+
+/**
+ * @function utc_nntrainer_model_get_input_tensors_info_n1
+ * @since_tizen 6.5
+ * @description test for get info of model's input tensors without model
+ */
+int utc_nntrainer_model_get_input_tensors_info_n1(void)
+{
+ status = ml_train_model_get_input_tensors_info(NULL, &input_info);
+ if (train_supported == false)
+ {
+ assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+ }
+ else
+ {
+ assert_eq(status, ML_ERROR_INVALID_PARAMETER);
+ }
+
+ return 0;
+}
+
+/**
+ * @function utc_nntrainer_model_get_input_tensors_info_n2
+ * @since_tizen 6.5
+ * @description test for get info of model's input tensors without model compile
+ */
+int utc_nntrainer_model_get_input_tensors_info_n2(void)
+{
+ ml_train_model_construct_with_conf(conf_path, &model);
+
+ status = ml_train_model_get_input_tensors_info(model, &input_info);
+ if (train_supported == false)
+ {
+ assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+ }
+ else
+ {
+ assert_neq(status, ML_ERROR_NONE);
+ }
+
+ ml_train_model_destroy(model);
+
+ return 0;
+}
+
+/**
+ * @function utc_nntrainer_model_get_input_tensors_info_n3
+ * @since_tizen 6.5
+ * @description test for get info of model's input tensors with destroyed model
+ */
+int utc_nntrainer_model_get_input_tensors_info_n3(void)
+{
+ ml_train_model_construct_with_conf(conf_path, &model);
+ ml_train_model_compile(model, NULL);
+ ml_train_model_destroy(model);
+
+ status = ml_train_model_get_input_tensors_info(model, &input_info);
+ if (train_supported == false)
+ {
+ assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+ }
+ else
+ {
+ assert_neq(status, ML_ERROR_NONE);
+ }
+
+ return 0;
+}
+
+/**
+ * @function utc_nntrainer_model_get_output_tensors_info_p
+ * @since_tizen 6.5
+ * @description test for get info of model's output tensors
+ */
+int utc_nntrainer_model_get_output_tensors_info_p(void)
+{
+ unsigned int output_count;
+ unsigned int output_dim_expected[4] = {2, 1, 1, 10};
+ unsigned int dim[4];
+
+ ml_train_model_construct_with_conf(conf_path, &model);
+ ml_train_model_compile(model, NULL);
+
+ status = ml_train_model_get_output_tensors_info(model, &output_info);
+ if (train_supported == false)
+ {
+ assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+ }
+ else
+ {
+ assert_eq(status, ML_ERROR_NONE);
+ }
+
+ status = ml_tensors_info_get_count(output_info, &output_count);
+ if (train_supported == false)
+ {
+ assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+ }
+ else
+ {
+ assert_eq(status, ML_ERROR_NONE);
+ assert_eq(output_count, 1ul);
+ }
+
+ status = ml_tensors_info_get_tensor_dimension(output_info, 0, dim);
+ if (train_supported == false)
+ {
+ assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+ }
+ else
+ {
+ assert_eq(status, ML_ERROR_NONE);
+ for (unsigned int i = 0; i < 4; ++i) {
+ assert_eq(dim[i], output_dim_expected[i]);
+ }
+ }
+
+ ml_tensors_info_destroy(output_info);
+ ml_train_model_destroy(model);
+
+ return 0;
+}
+
+/**
+ * @function utc_nntrainer_model_get_output_tensors_info_n1
+ * @since_tizen 6.5
+ * @description test for get info of model's output tensors without model
+ */
+int utc_nntrainer_model_get_output_tensors_info_n1(void)
+{
+ status = ml_train_model_get_output_tensors_info(NULL, &output_info);
+ if (train_supported == false)
+ {
+ assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+ }
+ else
+ {
+ assert_eq(status, ML_ERROR_INVALID_PARAMETER);
+ }
+
+ return 0;
+}
+
+/**
+ * @function utc_nntrainer_model_get_output_tensors_info_n2
+ * @since_tizen 6.5
+ * @description test for get info of model's output tensors without model compile
+ */
+int utc_nntrainer_model_get_output_tensors_info_n2(void)
+{
+ ml_train_model_construct_with_conf(conf_path, &model);
+
+ status = ml_train_model_get_output_tensors_info(model, &output_info);
+ if (train_supported == false)
+ {
+ assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+ }
+ else
+ {
+ assert_neq(status, ML_ERROR_NONE);
+ }
+
+ ml_train_model_destroy(model);
+
+ return 0;
+}
+
+/**
+ * @function utc_nntrainer_model_get_output_tensors_info_n3
+ * @since_tizen 6.5
+ * @description test for get info of model's output tensors with destroyed model
+ */
+int utc_nntrainer_model_get_output_tensors_info_n3(void)
+{
+ ml_train_model_construct_with_conf(conf_path, &model);
+ ml_train_model_compile(model, NULL);
+ ml_train_model_destroy(model);
+
+ status = ml_train_model_get_output_tensors_info(model, &output_info);
+ if (train_supported == false)
+ {
+ assert_eq(status, ML_ERROR_NOT_SUPPORTED);
+ }
+ else
+ {
+ assert_neq(status, ML_ERROR_NONE);
+ }
+
+ return 0;
+}