summaryrefslogtreecommitdiff
path: root/src/train5.py
diff options
context:
space:
mode:
authortslil <tslil@posteo.de>2021-01-12 00:20:37 -0500
committertslil <tslil@posteo.de>2026-08-28 19:37:41 +0100
commit8647a53cb6ece8184fa989961efba974e553ecfc (patch)
tree940faecb1b5bfc0e891fb0edfb2b2236ba51a08d /src/train5.py
parent2fb71fcbc594c3a3f32ee0c95be2e4e9b9ae97df (diff)
Working version of this script
Diffstat (limited to 'src/train5.py')
-rw-r--r--src/train5.py76
1 files changed, 49 insertions, 27 deletions
diff --git a/src/train5.py b/src/train5.py
index 628b0b6..03e9669 100644
--- a/src/train5.py
+++ b/src/train5.py
@@ -2,6 +2,8 @@
import pandas as pd
import numpy as np
+from tensorflow import transpose
+
from tensorflow.keras.backend import get_value
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Concatenate
@@ -11,6 +13,27 @@ from tensorflow.keras.layers import Convolution2D
from tensorflow.keras.layers import Flatten
+def load_data(size):
+ shape = (-1, size, size, 8)
+
+ tr_fn = "training-"+str(size)+".csv"
+ training_csv = pd.read_csv(tr_fn) # .head(80000)
+ training_data = training_csv
+ training_stack_input = np.array(training_data.iloc[:, 2:-2]).reshape(shape, order='F')
+ training_flats_input = np.array(training_data.iloc[:, 0:2])
+ training_input = [training_stack_input, training_flats_input]
+ training_outcome = training_data.iloc[:, -2:]
+
+ val_fn = "validation-"+str(size)+".csv"
+ val_data = pd.read_csv(val_fn).tail(20000)
+ val_stack_input = np.array(val_data.iloc[:, 2:-2]).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[:, -2:]
+
+ return [(training_input, training_outcome), (val_input, val_outcome)]
+
+
def make_model(size, magic=[9, 18, 9]):
# Our model for the stacks, a small CNN
stack_shape = (size, size, 8)
@@ -38,6 +61,7 @@ def make_model(size, magic=[9, 18, 9]):
model.summary()
return model
+
def train(size, model, data, iterations=1, epochs=10):
(training_input, training_outcome), (val_input, val_outcome) = data
results = []
@@ -54,33 +78,13 @@ def train(size, model, data, iterations=1, epochs=10):
return (results, model)
-def load_data(size):
- size = 5
- shape = (-1, size, size, 8)
-
- tr_fn = "training-"+str(size)+".csv"
- training_csv = pd.read_csv(tr_fn) # .head(80000)
- training_data = training_csv
- training_stack_input = np.array(training_data.iloc[:, 2:-2]).reshape(shape, order='F')
- training_flats_input = np.array(training_data.iloc[:, 0:2])
- training_input = [training_stack_input, training_flats_input]
- training_outcome = training_data.iloc[:, -2:]
-
- val_fn = "validation-"+str(size)+".csv"
- val_data = pd.read_csv(val_fn).tail(20000)
- val_stack_input = np.array(val_data.iloc[:, 2:-2]).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[:, -2:]
-
- return [(training_input, training_outcome), (val_input, val_outcome)]
-
def model_size(model):
return sum([np.prod(get_value(w).shape) for w in model.trainable_weights])
+
def magic_search(data):
results = []
- for width in range(8, 16):
+ for width in range(10, 16):
for dense1 in range(8, 24):
for dense2 in range(6, dense1+1):
m = make_model(5, [width, dense1, dense2])
@@ -92,14 +96,32 @@ def magic_search(data):
print("Parameters {0}: {1}".format(r[0], r[1][-1:][0]))
+def write_weights(model):
+ def fix(string):
+ return string.replace("[", "{").replace("]", "}")
+ f = open("weights.txt", "w")
+ conv2d_weights = np.array(transpose(model.trainable_variables[0], perm=[3, 1, 0, 2]))
+ conv2d_biases = np.array(model.trainable_variables[1])
+ dense1_weights = np.array(transpose(model.trainable_variables[2], perm=[1, 0]))
+ dense1_biases = np.array(model.trainable_variables[3])
+ dense2_weights = np.array(transpose(model.trainable_variables[4], perm=[1, 0]))
+ dense2_biases = np.array(model.trainable_variables[5])
+ output_weights = np.array(transpose(model.trainable_variables[6], perm=[1, 0]))
+ output_biases = np.array(model.trainable_variables[7])
+ for v in [conv2d_weights, conv2d_biases,
+ dense1_weights, dense1_biases,
+ dense2_weights, dense2_biases,
+ output_weights, output_biases]:
+ f.write(fix(str(v))+"\n")
+ f.close()
+
+
data = load_data(5)
model = make_model(5, [12, 9, 8])
-results, model = train(5, model, data, iterations=1, epochs=20)
+results, model = train(5, model, data, iterations=10, epochs=20)
print("\nScores")
for i in range(len(results)):
print("Iteration {0}: {1}".format(i+1, results[i]))
+write_weights(model)
-f=open("softmax_weights.txt","w")
-f.write(str(model.trainable_variables))
-f.close()
-# print(model.trainable_variables)
+# magic_search(data)