Exemplo n.º 1
0
def predict_all(data_name, X, use_cache=False):
    """予測。"""
    gen = tk.generator.SimpleGenerator()
    model = tk.dl.models.Model.load(MODELS_DIR / f'model.fold0.h5',
                                    gen,
                                    batch_size=BATCH_SIZE,
                                    multi_gpu=True)
    pred = _evaluation.predict_tta(model, X)
    return pred
Exemplo n.º 2
0
def predict_all(data_name, X, use_cache=False):
    """予測。"""
    cache_path = CACHE_DIR / data_name / f'{MODEL_NAME}.pkl'
    if use_cache and cache_path.is_file():
        return joblib.load(cache_path)

    if data_name == 'val':
        X_list, vi_list = [], []
        split_seed = int((MODELS_DIR / 'split_seed.txt').read_text())
        for cv_index in range(CV_COUNT):
            _, vi = tk.ml.cv_indices(X,
                                     None,
                                     cv_count=CV_COUNT,
                                     cv_index=cv_index,
                                     split_seed=split_seed,
                                     stratify=False)
            X_list.append(X[vi])
            vi_list.append(vi)
    else:
        X = _data.load_test_data()
        X_list = [X] * CV_COUNT

    gen = tk.generator.SimpleGenerator()
    model = tk.dl.models.Model.load(MODELS_DIR / f'model.fold0.h5',
                                    gen,
                                    batch_size=BATCH_SIZE,
                                    multi_gpu=True)

    pred_list = []
    for cv_index in tk.tqdm(range(CV_COUNT), desc='predict'):
        if cv_index != 0:
            model.load_weights(MODELS_DIR / f'model.fold{cv_index}.h5')

        X_t = X_list[cv_index]
        pred = _evaluation.predict_tta(model, X_t, mode='bin')
        pred_list.append(pred)

    if data_name == 'val':
        pred = np.empty((len(X), 1), dtype=np.float32)
        for vi, p in zip(vi_list, pred_list):
            pred[vi] = p
    else:
        pred = pred_list

    cache_path.parent.mkdir(parents=True, exist_ok=True)
    joblib.dump(pred, cache_path, compress=3)
    return pred