Github
https://github.com/intenseG/Pyaq
[vagrant@localhost igo]$ git clone https://github.com/intenseG/Pyaq.git
Initialized empty Git repository in /home/vagrant/python/igo/Pyaq/.git/
remote: Enumerating objects: 74, done.
remote: Total 74 (delta 0), reused 0 (delta 0), pack-reused 74
Unpacking objects: 100% (74/74), done.
[vagrant@localhost igo]$ cd Pyaq
[vagrant@localhost Pyaq]$ ls
LICENSE board.py learn.py pre_train search.py
README.md gtp.py model.py pyaq.py sgf.py
tensorflowが入っていることを確認します
[vagrant@localhost Pyaq]$ pip list
囲碁のデータセット
https://github.com/yenw/computer-go-dataset
http://www.yss-aya.com/ayaself/ayaself.html
pyaqの中身
#!/usr/bin/env python # -*- coding: utf-8 -*- from collections import Counter import sys from board import * import gtp import learn import search if __name__ == "__main__": args = sys.argv launch_mode = 0 # 0: gtp, 1: self, 2: learn byoyomi = 5.0 main_time = 0.0 quick = False random = False clean = False use_gpu = True for arg in args: if arg.find("self") >= 0: launch_mode = 1 elif arg.find("learn") >= 0: launch_mode = 2 elif arg.find("quick") >= 0: quick = True elif arg.find("random") >= 0: random = True elif arg.find("clean") >= 0: clean = True elif arg.find("main_time") >= 0: main_time = float(arg[arg.find("=") + 1:]) elif arg.find("byoyomi") >= 0: byoyomi = float(arg[arg.find("=") + 1:]) elif arg.find("cpu") >= 0: use_gpu = False if launch_mode == 0: gtp.call_gtp(main_time, byoyomi, quick, clean, use_gpu) elif launch_mode == 1: b = Board() if not random: tree = search.Tree("model.ckpt", use_gpu) while b.move_cnt < BVCNT * 2: prev_move = b.prev_move if random: move = b.random_play() elif quick: move = rv2ev(np.argmax(tree.evaluate(b)[0][0])) b.play(move, False) else: move, _ = tree.search(b, 0, clean=clean) b.play(move, False) b.showboard() if prev_move == PASS and move == PASS: break score_list = [] b_cpy = Board() for i in range(256): b.copy(b_cpy) b_cpy.rollout(show_board=False) score_list.append(b_cpy.score()) score = Counter(score_list).most_common(1)[0][0] if score == 0: result_str = "Draw" else: winner = "B" if score > 0 else "W" result_str = "%s+%.1f" % (winner, abs(score)) sys.stderr.write("result: %s\n" % result_str) else: learn.learn(3e-4, 0.5, sgf_dir="sgf/", use_gpu=use_gpu, gpu_cnt=1)