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
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