示例#1
0
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
示例#2
0
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