def subsample(): """Sample num_positions postions from each game in sgf_dir Usage: python3 sharp_positions.py subsample --num_positions 10 --sgf_dir data/s NOTE(sethtroisi): see link for a script to truncate SGFs at move number https://github.com/sethtroisi/go-scripts """ sgf_files = oneoff_utils.find_and_filter_sgf_files(FLAGS.sgf_dir, None, None) with open(FLAG.collection, 'w') as collection: fails = 0 for path in tqdm(sorted(sgf_files)): try: positions, moves, results = oneoff_utils.parse_sgf(path) except KeyboardInterrupt: raise except Exception as e: fails += 1 print("Fail {}, while parsing {}: {}".format(fails, path, e)) continue moves = len(positions) indexes = random.sample(range(10, moves), FLAGS.num_positions) for index in sorted(indexes): collection.write('{}, {}\n'.format(path, index))
def get_final_positions(): sgf_files = sorted(oneoff_utils.find_and_filter_sgf_files(FLAGS.sgf_dir)) with multiprocessing.Pool() as pool: pos = list(pool.map(oneoff_utils.final_position_sgf, tqdm(sgf_files))) assert len(pos) > 0, "BOARD_SIZE != 19?" return sgf_files, pos
def main(unusedargv): sgf_files = oneoff_utils.find_and_filter_sgf_files(FLAGS.sgf_dir, FLAGS.min_year, FLAGS.komi) pos_data, move_data, result_data, move_idxs = sample_positions_from_games( sgf_files=sgf_files, num_positions=FLAGS.num_positions) df = get_training_curve_data(FLAGS.model_dir, pos_data, move_data, result_data, FLAGS.idx_start, FLAGS.eval_every) save_plots(FLAGS.plot_dir, df)
def main(unusedargv): sgf_files = oneoff_utils.find_and_filter_sgf_files(FLAGS.sgf_dir) eval_positions = positions_from_sgfs(sgf_files) eval_for_policy( eval_positions, FLAGS.model_dir, FLAGS.data_dir, FLAGS.idx_start, FLAGS.eval_every)
def main(unusedargv): sgf_files = oneoff_utils.find_and_filter_sgf_files(FLAGS.sgf_dir) eval_positions = positions_from_sgfs(sgf_files) eval_pv(eval_positions)