return x * (1 - x) if derivative else 1 / (1 + np.exp(-x)) best_w = sigmoid(best_w) print() with np.printoptions(precision=2, suppress=True): print(best_loss_v) for l in best_w: for e in l: print('%.2f' % e, end=' ') print() print() print(np.sum(best_w, axis=0)) weighted_inp = np.mean(valid_merged, axis=1) best_th = threshold_search(weighted_inp, valid_ohs) __best_threshold = best_th f1_best = get_f1_threshold(weighted_inp, valid_ohs, __best_threshold) print(__best_threshold) print('f1_best(all, naive valid)=%.4f' % f1_best) weighted_inp = np.mean(valid_v, axis=1) best_th = threshold_search(weighted_inp, valid_ohs_v) __best_threshold = best_th f1_best = get_f1_threshold(weighted_inp, valid_ohs_v, __best_threshold) print(__best_threshold) print('f1_best(naive valid)=%.4f' % f1_best) weighted_valid = valid_v * best_w weighted_valid = np.sum(weighted_valid, axis=1) weighted_valid = np.clip(weighted_valid, 0.0, 1.0)
# f1_best = get_f1_threshold(weighted_inp, valid_ohs, __best_threshold) # print(__best_threshold) # print('f1_best(naive valid)=%.4f' % f1_best) # # weighted_inp = np.mean(valid_v, axis=1) # best_th = threshold_search(weighted_inp, valid_ohs_v) # __best_threshold = best_th # __best_threshold_naive = best_th # f1_best = get_f1_threshold(weighted_inp, valid_ohs_v, __best_threshold) # print(__best_threshold) # print('f1_best(naive valid_v)=%.4f' % f1_best) out = eval_batch(train_v, train_logit_v) out = out.detach().cpu().numpy() best_th = threshold_search(out, train_ohs_v) __best_threshold = best_th f1_best = get_f1_threshold(out, train_ohs_v, __best_threshold) print(__best_threshold) print('f1_best(train_v)=', f1_best) out = eval_batch(valid_merged, valid_logit) out = out.detach().cpu().numpy() f1_best = get_f1_threshold(out, valid_ohs, __best_threshold) print(__best_threshold) print('f1_best(valid)=', f1_best) best_th = threshold_search(out, valid_ohs)
metrics="merror", seed=100) print(cvr['train-merror-mean'].tail(1)) print(cvr['test-merror-mean'].tail(1)) print('-----') print('----- train on subset') xg_subset_t = xgb.DMatrix(valid_expand_t, label=valid_lbs_t) xg_subset_v = xgb.DMatrix(valid_expand_v, label=valid_lbs_v) bst = xgb.train(param, xg_subset_t, num_round, [(xg_subset_t, 'train'), (xg_subset_v, 'valid')], early_stopping_rounds=early_stop) xgpred_val = bst.predict(xgb.DMatrix(valid_merged[:split_idx])) best_th = threshold_search(xgpred_val, valid_ohs[:split_idx]) __best_threshold = best_th f1_best = get_f1_threshold(xgpred_val, valid_ohs[:split_idx], __best_threshold) print(__best_threshold) print('f1_best=', f1_best) sys.exit(0) # print('----------- train') # bst = xgb.train(param, xg_train, num_round, watchlist, early_stopping_rounds=early_stop) # # xgpred_val = bst.predict(xg_train2) # best_th = threshold_search(xgpred_val, valid_ohs) # __best_threshold = best_th # f1_best = get_f1_threshold(xgpred_val, valid_ohs, __best_threshold)
print('test result @ epoch=%d' % best_valid_epoch) else: print('load...') checkpoint = torch.load('asset/%s.best.pt' % C.get()['name']) model.load_state_dict(checkpoint['model_state_dict']) print('epoch@%d' % checkpoint['epoch']) # only for evaluation tta = True d_train, d_cvalid, d_tests = get_dataloaders_eval(tta) model.eval() # ----- train (sampled) ----- train_result = run_epoch(model, d_train, title='train', aug=tta) best_th = threshold_search(train_result['prediction'], train_result['labels']) __best_threshold = best_th print('best_th(train)=', __best_threshold) preds_concat = np.concatenate(train_result['prediction'], axis=0) ys_concat = np.concatenate(train_result['labels'], axis=0) f1_train = get_f1_threshold(preds_concat, ys_concat, __best_threshold) print('f1(train)=', f1_train) # ----- cvalid ----- cvalid_result = run_epoch(model, d_cvalid, title='valid', aug=tta) best_th = threshold_search(cvalid_result['prediction'], cvalid_result['labels']) __best_threshold = best_th print('best_th(cvalid)=', __best_threshold)
loss = loss_fn(out, lb) optimizer.zero_grad() loss.backward() optimizer.step() ma_loss_t = ma_loss_t * 0.9 + loss.item() * 0.1 print() # net.load_state_dict(best_model) net.eval() th_flat = True weighted_inp = np.mean(train_merged, axis=1) best_th = threshold_search(weighted_inp, train_ohs, flat=th_flat) __best_threshold = best_th f1_best = get_f1_threshold(weighted_inp, train_ohs, __best_threshold) print(__best_threshold) print('f1_best(naive train)=%.4f' % f1_best) weighted_inp = np.mean(train_v, axis=1) best_th = threshold_search(weighted_inp, train_ohs_v, flat=th_flat) __best_threshold = best_th f1_best = get_f1_threshold(weighted_inp, train_ohs_v, __best_threshold) print(__best_threshold) print('f1_best(naive train_v)=%.4f' % f1_best) weighted_inp = np.mean(valid_merged, axis=1) f1_best = get_f1_threshold(weighted_inp, valid_ohs, __best_threshold) print('f1_best(naive valid)=%.4f' % f1_best)