aboutsummaryrefslogtreecommitdiff
path: root/src/train5.py
diff options
context:
space:
mode:
authortslil <tslil@posteo.de>2021-01-13 23:41:32 -0500
committertslil <tslil@posteo.de>2026-08-28 19:37:41 +0100
commitcf7d665598e34e32d258775b583968e758c8f2fb (patch)
tree6bfda86535ffa051afd8ccfd70f1d4488701dfdf /src/train5.py
parent2ef0078ba2afd99c4fc2673497f3d3a39119cf5d (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.py22
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]))