aboutsummaryrefslogtreecommitdiff
path: root/src/pptdb.c
diff options
context:
space:
mode:
authortslil clingman <tslil@posteo.de>2021-02-10 20:07:24 -0500
committertslil <tslil@posteo.de>2026-08-28 19:37:41 +0100
commit890eb8d7f4a8c46eae18283ca5ac9c61fd41ed97 (patch)
treee0239b7d48b83fce4f9107ed553717b14042646a /src/pptdb.c
parentce09b6d94ac3dbf426e959b14fd7731001a003d1 (diff)
Change the training data generation a little
Although it pains me to say it, ``label smoothing'' appears to be actually work. I'm also currently experimenting with training simply against _all_ games, instead of only bot matches. Once the training finishes i'll pit cttei against itself with old and new weights, hopefully there'll be a noticeable improvement.
Diffstat (limited to 'src/pptdb.c')
-rw-r--r--src/pptdb.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/pptdb.c b/src/pptdb.c
index bb94987..286678d 100644
--- a/src/pptdb.c
+++ b/src/pptdb.c
@@ -24,10 +24,10 @@
#include <tak.h>
-float max_flats;
+int generate;
uint64_t heights[16];
FILE *training_fh = NULL;
-int generate, outcome_black;
+float max_flats, outcome_black;
const int max_depth = 6;
@@ -71,7 +71,7 @@ write_input(const int dx, const int dy, const uint8_t swap) {
}
}
}
- fprintf(training_fh,"%d\n", outcome_black);
+ fprintf(training_fh,"%.1f\n", outcome_black);
}
// Warning: performs _no_ checks on input whatsoever
@@ -136,11 +136,9 @@ parse_line(const char *pt, const ssize_t read) {
}
// Generate training data, not too early in the game, all
// orientations
- if (generate && ply + 4 >= total_plies) {
- 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); write_input(+1, +1, 1);
+ if (generate && ply + 2 >= total_plies) {
+#define RANDPM1 ((rand()&1)?-1:+1)
+ write_input(RANDPM1, RANDPM1, rand()&1);
}
// Parse next action
while (idx<read && pt[idx++]!=',');
@@ -198,8 +196,8 @@ int main(int argc, char **argv) {
// Reset everything
reset_state(size);
// Store the outcome of this game. Black win = 1
- if (line[read-4] == '0') outcome_black = 1;
- else outcome_black = -1;
+ if (line[read-4] == '0') outcome_black = 0.9;
+ else outcome_black = -0.9;
// Parse the line
r = parse_line(line,read-4);
// Adjust counts if we're not generating training data