diff options
| author | tslil <tslil@posteo.de> | 2021-01-13 23:41:32 -0500 |
|---|---|---|
| committer | tslil <tslil@posteo.de> | 2026-08-28 19:37:41 +0100 |
| commit | cf7d665598e34e32d258775b583968e758c8f2fb (patch) | |
| tree | 6bfda86535ffa051afd8ccfd70f1d4488701dfdf /src/train5.py | |
| parent | 2ef0078ba2afd99c4fc2673497f3d3a39119cf5d (diff) | |
Fixed minimax (!), fixed bugs in tak.c
With minimax of depth 1 the evaluation function seems alright with the
current method of training and generating weights
Diffstat (limited to 'src/train5.py')
| -rw-r--r-- | src/train5.py | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/train5.py b/src/train5.py index 71a8652..c3fec82 100644 --- a/src/train5.py +++ b/src/train5.py @@ -31,6 +31,17 @@ def truncated_pade_logistic(x): divide(x, add(square(x), k(10.0)))))) return minimum(k(1.0), maximum(k(0.0), divide(val, k(24.0)))) + +# A cheaper version of tanh, x/6+25*x/(6*(2*x*x+5)), +# clamped between -1 and 1. +def truncated_pade_tanh(x): + val = add(divide(x, k(6.0)), + multiply(k(25.0), + divide(x, multiply(k(6.0), add(k(5.0), + multiply(k(2.0), square(x))))))) + return minimum(k(1.0), maximum(k(-1.0), val)) + + def make_model(size, magic=[12, 9, 9]): # Our model for the stacks, a small CNN stack_shape = (size, size, 8) @@ -59,7 +70,7 @@ def make_model(size, magic=[12, 9, 9]): def load_data(size): shape = (-1, size, size, 8) - + # Load training data tr_fn = "training-"+str(size)+".csv" training_csv = pd.read_csv(tr_fn) #.head(100000) training_data = training_csv @@ -67,14 +78,13 @@ def load_data(size): training_flats_input = np.array(training_data.iloc[:, 0:2]) training_input = [training_stack_input, training_flats_input] training_outcome = training_data.iloc[:, -1:] - + # Load validation data val_fn = "validation-"+str(size)+".csv" - val_data = pd.read_csv(val_fn) #.tail(20000) + val_data = pd.read_csv(val_fn).tail(20000) val_stack_input = np.array(val_data.iloc[:, 2:-1]).reshape(shape, order='F') val_flats_input = np.array(val_data.iloc[:, 0:2]) val_input = [val_stack_input, val_flats_input] val_outcome = val_data.iloc[:, -1:] - return [(training_input, training_outcome), (val_input, val_outcome)] def train(size, model, data, iterations=1, epochs=10): @@ -150,8 +160,8 @@ def write_weights(model): data = load_data(5) -model = make_model(5, [12, 9, 9]) -results, model = train(5, model, data, iterations=10, epochs=20) +model = make_model(5, [12, 9, 10]) +results, model = train(5, model, data, iterations=1, epochs=10) print("\nScores") for i in range(len(results)): print("Iteration {0}: {1}".format(i+1, results[i])) |
