pyaq on windows

囲碁はよく分からないので練習問題にも適さないと思ってたのですが

まぁ,こういう話ならちょっと触ってみます。

  

github.com

本家はpython 2.7 on ubuntu 16.04 らしいんですが,そんな環境作るのもあれなので

うちのpython 3.6 on windows10 でやってみます。

結論から言うと探索なしまでは簡単に動きました。

 

以下,メモ。

tensorflowのWindows版もpython3.6に対応したので今では難なくインストール可能。

learn.pyの中のxrangeを二か所rangeに。(python2->3あるある)

learn.pyの中でlog吐くところでopenオプション"aw"を"a"に。

これはpython2系ならワーニングも出ないんだろうか?

 

学習は時間かかりそうなので少し走らせて負荷がかかることを確認して打ち切った。

メモリは1.3GB程度しか使ってない感じ。(--cpuで)

 

既学習データを用いての探索なし自己対戦は問題なく動く。

探索を入れるとエラー。

search.pyの117行目でdivision by 0である。

python2系は容認するらしいのだけど3系はスルーしてくれない。

np.seterr(all='ignore') # 3系で走らせるおまじないを宣言部に置く

 

それからもスタック不足とか色々

もしかして演算系の結果違いとかが出てるんかなぁ・・・

rate[np.isnan(rate)] = 0.0

とか行足してもどうもダメっぽい。

ってところで今夜は終わりにします。

---

2/14 追記

探索させると,numpyの実装が悪いんでしょうけどignoreしてもoldstateとかで内部で状態確保してるらしくスタック溢れて止まるようだ。

最悪2手目。たまに5,6手まで進む。

エラー前に分岐させるか・・・ #後でやる

 

2/16 追記

python3での不具合はhash衝突っぽい

board.pyに

import hashlib して

def hash(self):
return (int(hashlib.md5(self.color.data).hexdigest()[:4], 16) ^
int(hashlib.md5(self.prev_color[0].data).hexdigest()[:4], 16) ^ self.turn)

とhashを書き換えてやると遅くなるが衝突しなくなる。

もっとエレガントな方法があるとおもうが

python歴1年程度なので,hashについて詳しくは知らない。

 

2/17 追記

公式の方がエレガントに対応したので私の役割は終わりました。pyaqはいい玩具なので皆で遊びましょう。