function ValidateCompileOptions(options) {
var args = {};
- if (options.hasOwnProperty('loss_val')) {
- args.loss = options.loss_val;
- }
- if (options.hasOwnProperty('loss')) {
- args.loss = options.loss;
- }
- if (options.hasOwnProperty('batch_size')) {
- args.batch_size = options.batch_size;
+ if (!type_.isNullOrUndefined(options)) {
+ if (options.hasOwnProperty('loss_val')) {
+ args.loss = options.loss_val;
+ }
+ if (options.hasOwnProperty('loss')) {
+ args.loss = options.loss;
+ }
+ if (options.hasOwnProperty('batch_size')) {
+ args.batch_size = options.batch_size;
+ }
}
return args;
}
function ValidateRunOptions(options) {
var args = {};
- if (options.hasOwnProperty('batch_size')) {
- args.batch_size = options.batch_size;
- }
- if (options.hasOwnProperty('epochs')) {
- args.epochs = options.epochs;
- }
- if (options.hasOwnProperty('save_path')) {
- // produce a global path without "file://" prefix
- args.save_path = tizen.filesystem.toURI(options.save_path).substring("file://".length);
+ if (!type_.isNullOrUndefined(options)) {
+ if (options.hasOwnProperty('batch_size')) {
+ args.batch_size = options.batch_size;
+ }
+ if (options.hasOwnProperty('epochs')) {
+ args.epochs = options.epochs;
+ }
+ if (options.hasOwnProperty('save_path')) {
+ // produce a global path without "file://" prefix
+ args.save_path = tizen.filesystem.toURI(options.save_path).substring("file://".length);
+ }
}
return args;
}
var ValidModelRunExceptions = [
+ 'TypeMismatchError'
+];
+
+var ValidModelRunCallbackErrors = [
'InvalidValuesError',
'NotFoundError',
'InvalidStateError',
- 'TypeMismatchError',
'AbortError'
];
nullable: true
}
]);
- var runOptions = {};
- if (args.has.options) {
- runOptions = ValidateRunOptions(args.options);
- }
-
- var callArgs = {
- id: this._id,
- options: runOptions
- };
var callback = function (result) {
if (native_.isFailure(result)) {
args.errorCallback,
native_.getErrorObjectAndValidate(
result,
- ValidModelRunExceptions,
+ ValidModelRunCallbackErrors,
AbortError
)
);
}
};
+ var runOptions = {};
+ if (args.has.options) {
+ try {
+ runOptions = ValidateRunOptions(args.options);
+ } catch (e) {
+ // pass InvalidValuesError to callback
+ native_.callIfPossible(args.errorCallback, e);
+ return;
+ }
+ }
+
+ var callArgs = {
+ id: this._id,
+ options: runOptions
+ };
+
+
var result = native_.call('MLTrainerModelRun', callArgs, callback);
if (native_.isFailure(result)) {
throw native_.getErrorObjectAndValidate(
int ret_val = ml_train_model_construct(&n_model);
if (ret_val != ML_ERROR_NONE) {
LoggerE("Could not create model: %d (%s)", ret_val, ml_strerror(ret_val));
- return PlatformResult(ErrorCode::ABORT_ERR, ml_strerror(ret_val));
+ return util::ToPlatformResult(ret_val, ml_strerror(ret_val));
}
models_[next_model_id_] = std::make_shared<Model>(n_model);
int ret_val = ml_train_model_construct_with_conf(config.c_str(), &n_model);
if (ret_val != ML_ERROR_NONE) {
LoggerE("Could not create model: %d (%s)", ret_val, ml_strerror(ret_val));
- return PlatformResult(ErrorCode::ABORT_ERR, ml_strerror(ret_val));
+ return util::ToPlatformResult(ret_val, ml_strerror(ret_val));
}
models_[next_model_id_] = std::make_shared<Model>(n_model);
ss << key << "=" << value << OPTION_SEPARATOR;
} else {
LoggerE("Unexpected param type for: %s", key.c_str());
- return PlatformResult(ErrorCode::ABORT_ERR,
+ return PlatformResult(ErrorCode::INVALID_VALUES_ERR,
"Unexpected param type for:" + key);
}
}
if (ret_val != ML_ERROR_NONE) {
LoggerE("Could not compile model: %d (%s)", ret_val, ml_strerror(ret_val));
- return PlatformResult(ErrorCode::ABORT_ERR, ml_strerror(ret_val));
+ return util::ToPlatformResult(ret_val, ml_strerror(ret_val));
}
model->setCompiled(true);
ss << key << "=" << value << OPTION_SEPARATOR;
} else {
LoggerE("Unexpected param type for: %s", key.c_str());
- return PlatformResult(ErrorCode::ABORT_ERR,
+ return PlatformResult(ErrorCode::INVALID_VALUES_ERR,
"Unexpected param type for:" + key);
}
}
if (ret_val != ML_ERROR_NONE) {
LoggerE("Could not run (train) model: %d (%s)", ret_val,
ml_strerror(ret_val));
- return PlatformResult(ErrorCode::UNKNOWN_ERR, ml_strerror(ret_val));
+ return util::ToPlatformResult(ret_val, ml_strerror(ret_val));
}
return PlatformResult();