def invoke_model(parameters): model_params = load_parameters() model_name = model_params["MODEL_TYPE"] for parameter in parameters.keys(): model_params[parameter] = parameters[parameter][0] logger.debug("Assigning to %s the value %s" % (str(parameter), parameters[parameter][0])) model_name += '_' + str(parameter) + '_' + str(parameters[parameter][0]) model_params["SKIP_VECTORS_HIDDEN_SIZE"] = model_params["TARGET_TEXT_EMBEDDING_SIZE"] model_params["MODEL_NAME"] = model_name # models and evaluation results will be stored here model_params[ "STORE_PATH"] = '/home/lvapeab/smt/software/egocentric-video-description/meta-optimizers/spearmint/trained_models/' + \ model_params["MODEL_NAME"] + '/' check_params(model_params) assert model_params['MODE'] == 'training', 'You can only launch Spearmint when training!' logging.info('Running training.') train_model(model_params) results_path = model_params['STORE_PATH'] + '/' + model_params['EVAL_ON_SETS'][0] + '.' + model_params['METRICS'][0] # Recover the highest metric score metric_pos_cmd = "head -n 1 " + results_path + \ " |awk -v metric=" + metric_name + \ " 'BEGIN{FS=\",\"}" \ "{for (i=1; i<=NF; i++) if ($i == metric) print i;}'" metric_pos = \ subprocess.Popen(metric_pos_cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True).communicate()[0][:-1] cmd = "tail -n +2 " + results_path + \ " |awk -v m_pos=" + str(metric_pos) + \ " 'BEGIN{FS=\",\"}{print $m_pos}'|sort -gr|head -n 1" ps = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True, env=d) metric_value = float(ps.communicate()[0]) print "Best %s: %f" % (metric_name, metric_value) return 1. - metric_value if maximize else metric_value # Spearmint minimizes a function
def invoke_model(parameters): """ Loads a model, trains it and evaluates it. :param parameters: Model parameters :return: Metric to minimize value. """ model_params = load_parameters() model_name = model_params["MODEL_TYPE"] for parameter in list(parameters): model_params[parameter] = parameters[parameter][0] logger.debug("Assigning to %s the value %s" % (str(parameter), parameters[parameter][0])) model_name += '_' + str(parameter) + '_' + str( parameters[parameter][0]) model_params["MODEL_NAME"] = model_name # models and evaluation results will be stored here model_params["STORE_PATH"] = os.path.join('trained_models', model_params["MODEL_NAME"]) check_params(model_params) assert model_params[ 'MODE'] == 'training', 'You can only launch Spearmint when training!' logger.info('Running training.') train_model(model_params) results_path = os.path.join( model_params['STORE_PATH'], model_params['EVAL_ON_SETS'][0] + '.' + model_params['METRICS'][0]) # Recover the highest metric score metric_pos_cmd = "head -n 1 " + results_path + \ " |awk -v metric=" + metric_name + \ " 'BEGIN{FS=\",\"}" \ "{for (i=1; i<=NF; i++) if ($i == metric) print i;}'" metric_pos = subprocess.Popen(metric_pos_cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True).communicate()[0][:-1] cmd = "tail -n +2 " + results_path + \ " |awk -v m_pos=" + str(metric_pos) + \ " 'BEGIN{FS=\",\"}{print $m_pos}'|sort -gr|head -n 1" ps = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True, env=d) metric_value = float(ps.communicate()[0]) print("Best %s: %f" % (metric_name, metric_value)) return 1. - metric_value if maximize else metric_value # Spearmint minimizes a function