1. namahoge

    Posted

    namahoge
Changes in title
+TensorFlow機械学習クックブック第6章(というか三目並べのところ)で個人的につまったところとか
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,87 @@
+三目並べの学習
+
+# Recipe 41
+
+そもそも何をどう学習するの?? :angel:
+
+学習器を定義しているのは <方法> 9(モデルの変数と演算を...) ~ 11(損失関数を...) らへん。
+<方法> の 4(座標変換を使って...) ~ 8(トレーニングセットから1つの...) は下準備で、トレーニングセットを作ってる
+(準備がやたら長いしややこしくない??)
+github にある base_tic_tac_toe_moves.csv は対称的な局面は省略されてるてことか
+
+まとめると学習器自体はふつうで、
+
+入力 x: 局面情報(要素数9の一次元リスト)
+layer1 = sigmoid(A1*x+b1)
+layer2 = A2*layer1+b2
+教師ラベル y: 最善手(整数0~9のどれか)(あれ最善手ってどう定義してるんだろう(未検証))
+loss: layer2 と y のhogeエントロピー
+
+実際にはいくつかのデータをセットで学習器につっこむ(それはそう感)
+
+マル
+
+<方法>
+
+4.
+
+```
+board[::-1]
+```
+リストを逆順に並べ替える。 参考1 :baby:
+
+
+```
+list(zip(*[board[6:9], board[3:6], board[0:3]]))
+```
+
+ナニコレ長い。あと「\*」って可変長引数に使うやつじゃないの?? :construction_worker:
+で参考2~4
+なにやら *a みたいにアスタリスク「\*」をつけると a が展開されるらしい
+
+いろいろ試してみた(うp主はこれで理解できたつもり)
+
+![asterisk.png](https://qiita-image-store.s3.amazonaws.com/0/188173/fabeae6f-6bb2-2b16-fabc-d8f16eed8fae.png)
+
+てことで list(zip(*[board[6:9], board[3:6], board[0:3]])) を順を追って見てみる
+
+![asterisk2.png](https://qiita-image-store.s3.amazonaws.com/0/188173/1e35ab80-e0f0-182e-2e94-d30c06c1acb0.png)
+
+見やすいように (・・・☆)
+
+```py3
+def print_board(board): # 引数は一次元のリスト
+ print(' ' + str(board[0]) + ' | ' + str(board[1]) + ' | ' + str(board[2]))
+ #print('__________')
+ print(' ' + str(board[3]) + ' | ' + str(board[4]) + ' | ' + str(board[5]))
+ #print('__________')
+ print(' ' + str(board[6]) + ' | ' + str(board[7]) + ' | ' + str(board[8]))
+ print('\n')
+
+def make_board(board_2d): # 二次元のリストを一次元に変換する
+ return [value for item in board_2d for value in item]
+ '''
+ board_1d = []
+ for item in board_2d:
+ for value in item:
+ board_1d.append(value)
+ return board_1d
+ '''
+```
+
+
+
+![asterisk3.png](https://qiita-image-store.s3.amazonaws.com/0/188173/269c4e0c-5fb6-faf4-7bab-979ac0c3e2b1.png)
+
+```
+return [value for item in board_2d for value in item]
+```
+上の☆参照 :man_with_turban:
+for文で書き換えれる(長くなるけど)
+
+
+# 参考
+1. [[python] スライスでリバース!!](http://qiita.com/kakk_a/items/54e81346d8f35733ab5e)
+2. [Pythonでunzipってどうやるの?](http://www.madopro.net/entry/2016/12/21/134846)
+3. [アスタリスクによるシーケンスの展開](http://or1ko.hatenablog.com/entry/20080901/1220268174)
+4. [Pythonのイテレータとジェネレータ](http://qiita.com/tomotaka_ito/items/35f3eb108f587022fa09)