diff options
Diffstat (limited to 'src/train5.py')
| -rw-r--r-- | src/train5.py | 76 |
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) |
