From c9823c76dd43aa40bef3f67fa0940a78cb40bf05 Mon Sep 17 00:00:00 2001 From: tslil clingman Date: Wed, 17 Mar 2021 23:10:53 -0400 Subject: Corrected generation of training data for 6s --- src/cnn_train.py | 2 +- src/pptdb.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/cnn_train.py b/src/cnn_train.py index 111aa76..4ba0a0b 100644 --- a/src/cnn_train.py +++ b/src/cnn_train.py @@ -1,4 +1,4 @@ -# train5.py, train a small CNN to recognise winning Tak positions +# cnn_train.py, train a small CNN to recognise winning Tak positions # # Copyright (C) 2021, tslil clingman # diff --git a/src/pptdb.c b/src/pptdb.c index 8684c47..79f60c5 100644 --- a/src/pptdb.c +++ b/src/pptdb.c @@ -29,8 +29,6 @@ uint64_t heights[16]; FILE *training_fh = NULL; float max_flats, outcome_black; -const int max_depth = 6; - static void write_input(const int dx, const int dy, const uint8_t swap) { // Two numbers for flats remaining @@ -41,7 +39,7 @@ write_input(const int dx, const int dy, const uint8_t swap) { // Write the board layers float val; int col, row; - for (uint8_t depth = 0; depth < max_depth; depth++) { + for (uint8_t depth = 0; depth < board_size + 1; depth++) { row = (dy>0)?-1:board_size; for (int i = 0; i < board_size; i++) { row += dy; @@ -134,11 +132,13 @@ parse_line(const char *pt, const ssize_t read) { } } } - // Generate training data, not too early in the game, all - // orientations - if (generate && ply + 3 >= total_plies) { -#define RANDPM1 ((rand()&1)?-1:+1) - write_input(RANDPM1, RANDPM1, rand()&1); + // Generate training data, not too early in the game and not at + // the end, under all eight symmetries of the board + if (generate && ply < total_plies && ply + 2 >= total_plies) { + write_input(+1, +1, 1); write_input(+1, +1, 0); + write_input(+1, -1, 1); write_input(+1, -1, 0); + write_input(-1, +1, 1); write_input(-1, +1, 0); + write_input(-1, -1, 1); write_input(-1, -1, 0); } // Parse next action while (idx