Exemplo n.º 1
0
def create_model(result):
    meta = result.meta

    alpha = meta['alpha']
    n_inference_iter = meta['n_inference_iter']
    max_iter = meta['max_iter']
    C = meta['C']
    inner_tol = meta['inner_tol']
    inactive_window = meta['inactive_window']
    inactive_threshold = meta['inactive_threshold']
    latent_iter = meta['latent_iter']
    outer_tol = meta['outer_tol']
    min_changes = meta['min_changes']

    try:
        inference_cache = meta['inference_cache']
    except:
        inference_cache = 0

    crf = None
    if meta['dataset_name'] == 'syntetic':
        crf = HCRF(n_states=10, n_features=10, n_edge_features=2, alpha=alpha,
                   inference_method='gco', n_iter=n_inference_iter)
    elif meta['dataset_name'] == 'msrc':
        crf = HCRF(n_states=24, n_features=2028, n_edge_features=4, alpha=alpha,
                   inference_method='gco', n_iter=n_inference_iter)

    base_clf = OneSlackSSVM(crf, max_iter=max_iter, C=C, verbose=0,
                            tol=inner_tol, n_jobs=4, inference_cache=inference_cache,
                            inactive_window=inactive_window,
                            inactive_threshold=inactive_threshold)
    clf = LatentSSVM(base_clf, latent_iter=latent_iter, verbose=2,
                     tol=outer_tol, min_changes=min_changes, n_jobs=4)

    return clf
Exemplo n.º 2
0
def syntetic_weak(n_full=10,
                  n_train=200,
                  C=0.1,
                  dataset=1,
                  latent_iter=15,
                  max_iter=500,
                  inner_tol=0.001,
                  outer_tol=0.01,
                  min_changes=0,
                  initialize=True,
                  alpha=0.1,
                  n_inference_iter=5,
                  inactive_window=50,
                  inactive_threshold=1e-5,
                  warm_start=False,
                  inference_cache=0,
                  save_inner_w=False,
                  inference_method='gco'):
    # save parameters as meta
    meta_data = locals()

    logger = logging.getLogger(__name__)

    crf = HCRF(n_states=10,
               n_features=10,
               n_edge_features=2,
               alpha=alpha,
               inference_method=inference_method,
               n_iter=n_inference_iter)
    base_clf = OneSlackSSVM(crf,
                            verbose=2,
                            n_jobs=4,
                            max_iter=max_iter,
                            tol=inner_tol,
                            C=C,
                            inference_cache=inference_cache,
                            inactive_window=inactive_window,
                            inactive_threshold=inactive_threshold)
    clf = LatentSSVM(base_clf,
                     latent_iter=latent_iter,
                     verbose=2,
                     tol=outer_tol,
                     min_changes=min_changes,
                     n_jobs=4)

    x_train, y_train, y_train_full, x_test, y_test = \
        load_syntetic(dataset, n_full, n_train)

    start = time()
    clf.fit(x_train,
            y_train,
            initialize=initialize,
            warm_start=warm_start,
            save_inner_w=save_inner_w)
    stop = time()

    train_score = clf.score(x_train, y_train_full)
    test_score = clf.score(x_test, y_test)
    time_elapsed = stop - start

    logger.info('============================================================')
    logger.info('Score on train set: %f', train_score)
    logger.info('Score on test set: %f', test_score)
    logger.info('Norm of weight vector: |w|=%f', np.linalg.norm(clf.w))
    logger.info('Elapsed time: %f s', time_elapsed)

    test_scores = []
    for score in clf.staged_score(x_test, y_test):
        test_scores.append(score)

    train_scores = []
    for score in clf.staged_score(x_train, y_train_full):
        train_scores.append(score)

    raw_scores = []
    for score in clf.staged_score2(x_train, y_train):
        raw_scores.append(score)

    exp_data = clf._get_data()
    exp_data['test_scores'] = np.array(test_scores)
    exp_data['train_scores'] = np.array(train_scores)
    exp_data['raw_scores'] = np.array(raw_scores)

    meta_data['dataset_name'] = 'syntetic'
    meta_data['annotation_type'] = 'image-level labelling'
    meta_data['label_type'] = 'full+weak'
    meta_data['train_score'] = train_score
    meta_data['test_score'] = test_score
    meta_data['time_elapsed'] = time_elapsed
    meta_data['iter_done'] = clf.iter_done

    return ExperimentResult(exp_data, meta_data)