Help us understand the problem. What is going on with this article?

TensorFlow機械学習クックブック第6章(というか三目並べのところ)で個人的につまったところとか

More than 1 year has passed since last update.

三目並べの学習

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

てことで list(zip(*[board[6:9], board[3:6], board[0:3]])) を順を追って見てみる

asterisk2.png

見やすいように (・・・☆)

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

return [value for item in board_2d for value in item]

上の☆参照 :man_with_turban:
for文で書き換えれる(長くなるけど)

参考

  1. [python] スライスでリバース!!
  2. Pythonでunzipってどうやるの?
  3. アスタリスクによるシーケンスの展開
  4. Pythonのイテレータとジェネレータ
namahoge
松尾研(居候中()). AI/VR/ロボット
https://naruya.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした