@@ -10,57 +10,4 @@ def move_accuracy(y_test, y_pred):
10
10
"""A predicted move is correct if the largest output is 1 in the test vector."""
11
11
return np .mean (y_test [y_pred == np .max (y_pred , axis = 1 , keepdims = True )])
12
12
13
-
14
13
np .random .seed (1234 )
15
-
16
- df = pd .read_csv ("tictactoe-data.csv" )
17
- print ("Scores:" , Counter (df ["score" ]))
18
-
19
- # Input is all the board features (2x9 squares) plus the turn.
20
- X = df .iloc [:, list (range (18 )) + [- 2 ]]
21
-
22
- # Target variables are the possible move squares.
23
- moves = df .iloc [:, list (range (18 , 27 ))]
24
- # To predict score instead, use this as the target:
25
- # score = pd.get_dummies(df['score'])
26
-
27
- X_train , X_test , y_train , y_test = train_test_split (X , moves , test_size = 0.2 )
28
-
29
- print ("Train/test shapes:" , X_train .shape , X_test .shape , y_train .shape , y_test .shape )
30
-
31
- model = tf .keras .Sequential ()
32
- model .add (tf .keras .layers .Dense (128 , activation = "relu" , input_dim = X .shape [1 ]))
33
- model .add (tf .keras .layers .Dropout (0.3 ))
34
- model .add (tf .keras .layers .Dense (64 , activation = "relu" ))
35
- model .add (tf .keras .layers .Dropout (0.3 ))
36
- model .add (tf .keras .layers .Dense (32 , activation = "relu" ))
37
- model .add (tf .keras .layers .Dropout (0.3 ))
38
- model .add (tf .keras .layers .Dense (moves .shape [1 ], activation = "softmax" ))
39
-
40
- # For a multi-class classification problem
41
- model .compile (optimizer = "adam" , loss = "categorical_crossentropy" , metrics = ["accuracy" ])
42
-
43
- print (model .summary ())
44
-
45
- # This is not needed, but lets you view a lot of useful information using
46
- # > tensorboard --logdir logs
47
- # at your terminal prompt.
48
- tensorboard_callback = tf .keras .callbacks .TensorBoard (
49
- log_dir = "./logs" ,
50
- histogram_freq = 1 ,
51
- batch_size = 100 ,
52
- write_graph = True ,
53
- write_grads = True ,
54
- write_images = True ,
55
- )
56
- model .fit (
57
- X_train ,
58
- y_train ,
59
- epochs = 100 ,
60
- batch_size = 16 ,
61
- validation_data = [X_test , y_test ],
62
- callbacks = [tensorboard_callback ],
63
- )
64
-
65
- print ("accuracy:" , model .evaluate (X_test , y_test ))
66
- print ("Custom accuracy:" , move_accuracy (y_test .values , model .predict (X_test )))
0 commit comments