From 01dc86896da6596bc5ff28e13cd423ccbf5ea58a Mon Sep 17 00:00:00 2001 From: mikhaildmitrienko <39745913+mikhaildmitrienko@users.noreply.github.com> Date: Thu, 12 Jul 2018 16:51:47 -0500 Subject: [PATCH 01/10] Created train_optimizer.py --- precise/scripts/train_optimizer | 110 ++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 precise/scripts/train_optimizer diff --git a/precise/scripts/train_optimizer b/precise/scripts/train_optimizer new file mode 100644 index 0000000..c2d76fc --- /dev/null +++ b/precise/scripts/train_optimizer @@ -0,0 +1,110 @@ +#Precise keras model with bbopt optimiz + +import keras +from keras.layers.core import Dense +from keras.layers.recurrent import GRU +from keras.models import Sequential +from typing import * +from functions import load_keras, weighted_log_loss +from train_data import TrainData +from params import pr +from pprint import pprint +import h5py +import numpy +import os +from keras import backend as K +import codecs, json +from decimal import * + +os.environ['CUDA_VISIBLE_DEVICES'] = '1' + +#Optimizer blackhat +from bbopt import BlackBoxOptimizer +bb = BlackBoxOptimizer(file=__file__) + +#Loading in data to train +data = TrainData.from_both('/home/mikhail/wakewords/wakewords/files/tags.txt', '/home/mikhail/wakewords/wakewords/files', '/home/mikhail/wakewords/wakewords/not-wake-word/generated') +(train_inputs, train_outputs), (test_inputs, test_outputs) = data.load() + + + +test_data = (test_inputs, test_outputs) + +def false_pos(yt, yp) -> Any: + from keras import backend as K + return K.sum(K.cast(yp * (1 - yt) > 0.5, 'float')) / K.sum(1 - yt) + +def false_neg(yt, yp) -> Any: + from keras import backend as K + return K.sum(K.cast((1 - yp) * (0 + yt) > 0.5, 'float')) / K.sum(0 + yt) + +#goodness metric for optimization +def goodness(y_true, y_pred) -> Any: + from keras import backend as K + from math import exp + try: + param_score = 1.0 / (1.0 + exp((model.count_params() - 11000) / 2000)) + except OverflowError: + param_score = 1.0 / (1.0 + Decimal(exp((model.count_params() - 11000)) / 2000)) + fitness = param_score * (((1.0 - (0.05 * false_neg(y_true, y_pred))) - (0.95 * false_pos(y_true, y_pred)))) + return fitness + + + +for i in range(5): + if __name__ == "__main__": + bb.run(backend="random") + + print("\n= %d = (example #%d)" % (i+1, len(bb.get_data()["examples"])+1)) + + + shuffle_ids = numpy.arange(len(test_inputs)) + numpy.random.shuffle(shuffle_ids) + (test_inputs, test_outputs) = (test_inputs[shuffle_ids], test_outputs[shuffle_ids]) + + model_array = numpy.empty(len(test_data), dtype=int) + with h5py.File('tested_models.hdf5', 'w') as f: + f.create_dataset('dataset_1', data=model_array) + f.close() + + batch_size = bb.randint("batch_size", 1000, 5000, guess=3000) + + model = Sequential() + model.add(GRU(units = bb.randint("units", 1, 100, guess=50), activation='linear', input_shape=(pr.n_features, pr.feature_size), + dropout=bb.uniform("dropout", 0.1, 0.9, guess=0.6), name='net')) + model.add(Dense(1, activation='sigmoid')) + + model.compile('rmsprop', weighted_log_loss, metrics=['accuracy']) + + + + from keras.callbacks import ModelCheckpoint + checkpoint = ModelCheckpoint('tested_models.hdf5', monitor='val_loss', + save_best_only=True) + + train_history = model.fit(train_inputs, train_outputs, batch_size=batch_size, epochs=100, validation_data=(test_inputs, test_outputs), + callbacks=[checkpoint]) + test_loss, test_acc = model.evaluate(test_inputs, test_outputs) + + predictions = model.predict(test_inputs) + num_false_positive = numpy.sum(predictions * (1 - test_outputs) > 0.5) + num_false_negative = numpy.sum((1 - predictions) * test_outputs > 0.5) + false_positives = num_false_positive / numpy.sum(test_outputs < 0.5) + false_negatives = num_false_negative / numpy.sum(test_outputs > 0.5) + + bb.remember({ + "test loss": test_loss, + "test accuracy": test_acc, + "false positive%": false_positives, + "false negative%": false_negatives + }) + print(false_positives) + print("False positive: ", false_positives*100, "%") + bb.minimize(false_positives) + pprint(bb.get_current_run()) + +best_example = bb.get_optimal_run() +print("\n= BEST = (example #%d)" % bb.get_data()["examples"].index(best_example)) +pprint(best_example) + + From ac43e4b6bb509dea5e06e13d478c19841eb0199d Mon Sep 17 00:00:00 2001 From: Matthew Scholefield Date: Thu, 12 Jul 2018 16:58:19 -0500 Subject: [PATCH 02/10] Add .py extension to train_optimize Also rename to train_optimize to be consistent with verbiage --- precise/scripts/{train_optimizer => train_optimize.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename precise/scripts/{train_optimizer => train_optimize.py} (100%) diff --git a/precise/scripts/train_optimizer b/precise/scripts/train_optimize.py similarity index 100% rename from precise/scripts/train_optimizer rename to precise/scripts/train_optimize.py From 4f5df1b997da2c62e0e9ed127dca4b8cd17e0f5e Mon Sep 17 00:00:00 2001 From: Matthew Scholefield Date: Thu, 12 Jul 2018 17:00:14 -0500 Subject: [PATCH 03/10] Make imports absolute --- precise/scripts/train_optimize.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/precise/scripts/train_optimize.py b/precise/scripts/train_optimize.py index c2d76fc..5c3fae9 100644 --- a/precise/scripts/train_optimize.py +++ b/precise/scripts/train_optimize.py @@ -5,9 +5,9 @@ from keras.layers.core import Dense from keras.layers.recurrent import GRU from keras.models import Sequential from typing import * -from functions import load_keras, weighted_log_loss -from train_data import TrainData -from params import pr +from precise.functions import load_keras, weighted_log_loss +from precise.train_data import TrainData +from precise.params import pr from pprint import pprint import h5py import numpy From 5818a101da5549bd74b56ccd9ebeb24d6fc4a2ab Mon Sep 17 00:00:00 2001 From: Matthew Scholefield Date: Thu, 12 Jul 2018 17:00:44 -0500 Subject: [PATCH 04/10] Add license header --- precise/scripts/train_optimize.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/precise/scripts/train_optimize.py b/precise/scripts/train_optimize.py index 5c3fae9..cff3651 100644 --- a/precise/scripts/train_optimize.py +++ b/precise/scripts/train_optimize.py @@ -1,4 +1,17 @@ -#Precise keras model with bbopt optimiz +#!/usr/bin/env python3 +# Copyright 2018 Mycroft AI Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import keras from keras.layers.core import Dense From c5dd7c891dac2ae66a5218d13e9f149cd802db3b Mon Sep 17 00:00:00 2001 From: Matthew Scholefield Date: Thu, 12 Jul 2018 17:01:19 -0500 Subject: [PATCH 05/10] Autoformat and remove unused imports --- precise/scripts/train_optimize.py | 69 +++++++++++++++---------------- 1 file changed, 34 insertions(+), 35 deletions(-) diff --git a/precise/scripts/train_optimize.py b/precise/scripts/train_optimize.py index cff3651..5881838 100644 --- a/precise/scripts/train_optimize.py +++ b/precise/scripts/train_optimize.py @@ -13,68 +13,68 @@ # See the License for the specific language governing permissions and # limitations under the License. -import keras -from keras.layers.core import Dense -from keras.layers.recurrent import GRU -from keras.models import Sequential -from typing import * -from precise.functions import load_keras, weighted_log_loss -from precise.train_data import TrainData -from precise.params import pr -from pprint import pprint import h5py import numpy import os -from keras import backend as K -import codecs, json from decimal import * +from keras.layers.core import Dense +from keras.layers.recurrent import GRU +from keras.models import Sequential +from pprint import pprint +from typing import * + +from precise.functions import weighted_log_loss +from precise.params import pr +from precise.train_data import TrainData os.environ['CUDA_VISIBLE_DEVICES'] = '1' -#Optimizer blackhat +# Optimizer blackhat from bbopt import BlackBoxOptimizer + bb = BlackBoxOptimizer(file=__file__) -#Loading in data to train -data = TrainData.from_both('/home/mikhail/wakewords/wakewords/files/tags.txt', '/home/mikhail/wakewords/wakewords/files', '/home/mikhail/wakewords/wakewords/not-wake-word/generated') +# Loading in data to train +data = TrainData.from_both('/home/mikhail/wakewords/wakewords/files/tags.txt', + '/home/mikhail/wakewords/wakewords/files', + '/home/mikhail/wakewords/wakewords/not-wake-word/generated') (train_inputs, train_outputs), (test_inputs, test_outputs) = data.load() - - test_data = (test_inputs, test_outputs) + def false_pos(yt, yp) -> Any: from keras import backend as K return K.sum(K.cast(yp * (1 - yt) > 0.5, 'float')) / K.sum(1 - yt) + def false_neg(yt, yp) -> Any: from keras import backend as K return K.sum(K.cast((1 - yp) * (0 + yt) > 0.5, 'float')) / K.sum(0 + yt) -#goodness metric for optimization + +# goodness metric for optimization def goodness(y_true, y_pred) -> Any: - from keras import backend as K from math import exp try: param_score = 1.0 / (1.0 + exp((model.count_params() - 11000) / 2000)) except OverflowError: param_score = 1.0 / (1.0 + Decimal(exp((model.count_params() - 11000)) / 2000)) - fitness = param_score * (((1.0 - (0.05 * false_neg(y_true, y_pred))) - (0.95 * false_pos(y_true, y_pred)))) + fitness = param_score * ( + ((1.0 - (0.05 * false_neg(y_true, y_pred))) - (0.95 * false_pos(y_true, y_pred)))) return fitness - for i in range(5): if __name__ == "__main__": bb.run(backend="random") - print("\n= %d = (example #%d)" % (i+1, len(bb.get_data()["examples"])+1)) + print("\n= %d = (example #%d)" % (i + 1, len(bb.get_data()["examples"]) + 1)) - shuffle_ids = numpy.arange(len(test_inputs)) numpy.random.shuffle(shuffle_ids) (test_inputs, test_outputs) = (test_inputs[shuffle_ids], test_outputs[shuffle_ids]) - + model_array = numpy.empty(len(test_data), dtype=int) with h5py.File('tested_models.hdf5', 'w') as f: f.create_dataset('dataset_1', data=model_array) @@ -83,22 +83,23 @@ for i in range(5): batch_size = bb.randint("batch_size", 1000, 5000, guess=3000) model = Sequential() - model.add(GRU(units = bb.randint("units", 1, 100, guess=50), activation='linear', input_shape=(pr.n_features, pr.feature_size), - dropout=bb.uniform("dropout", 0.1, 0.9, guess=0.6), name='net')) + model.add(GRU(units=bb.randint("units", 1, 100, guess=50), activation='linear', + input_shape=(pr.n_features, pr.feature_size), + dropout=bb.uniform("dropout", 0.1, 0.9, guess=0.6), name='net')) model.add(Dense(1, activation='sigmoid')) - + model.compile('rmsprop', weighted_log_loss, metrics=['accuracy']) - - from keras.callbacks import ModelCheckpoint + checkpoint = ModelCheckpoint('tested_models.hdf5', monitor='val_loss', save_best_only=True) - train_history = model.fit(train_inputs, train_outputs, batch_size=batch_size, epochs=100, validation_data=(test_inputs, test_outputs), - callbacks=[checkpoint]) + train_history = model.fit(train_inputs, train_outputs, batch_size=batch_size, epochs=100, + validation_data=(test_inputs, test_outputs), + callbacks=[checkpoint]) test_loss, test_acc = model.evaluate(test_inputs, test_outputs) - + predictions = model.predict(test_inputs) num_false_positive = numpy.sum(predictions * (1 - test_outputs) > 0.5) num_false_negative = numpy.sum((1 - predictions) * test_outputs > 0.5) @@ -112,12 +113,10 @@ for i in range(5): "false negative%": false_negatives }) print(false_positives) - print("False positive: ", false_positives*100, "%") + print("False positive: ", false_positives * 100, "%") bb.minimize(false_positives) - pprint(bb.get_current_run()) + pprint(bb.get_current_run()) best_example = bb.get_optimal_run() print("\n= BEST = (example #%d)" % bb.get_data()["examples"].index(best_example)) pprint(best_example) - - From 4d1f212c2b733726e4fe3955f5817f1bf4333c0d Mon Sep 17 00:00:00 2001 From: Matthew Scholefield Date: Thu, 12 Jul 2018 17:01:52 -0500 Subject: [PATCH 06/10] Remove environment specific definition --- precise/scripts/train_optimize.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/precise/scripts/train_optimize.py b/precise/scripts/train_optimize.py index 5881838..7615f67 100644 --- a/precise/scripts/train_optimize.py +++ b/precise/scripts/train_optimize.py @@ -15,7 +15,8 @@ import h5py import numpy -import os +# Optimizer blackhat +from bbopt import BlackBoxOptimizer from decimal import * from keras.layers.core import Dense from keras.layers.recurrent import GRU @@ -27,11 +28,6 @@ from precise.functions import weighted_log_loss from precise.params import pr from precise.train_data import TrainData -os.environ['CUDA_VISIBLE_DEVICES'] = '1' - -# Optimizer blackhat -from bbopt import BlackBoxOptimizer - bb = BlackBoxOptimizer(file=__file__) # Loading in data to train @@ -61,7 +57,7 @@ def goodness(y_true, y_pred) -> Any: except OverflowError: param_score = 1.0 / (1.0 + Decimal(exp((model.count_params() - 11000)) / 2000)) fitness = param_score * ( - ((1.0 - (0.05 * false_neg(y_true, y_pred))) - (0.95 * false_pos(y_true, y_pred)))) + ((1.0 - (0.05 * false_neg(y_true, y_pred))) - (0.95 * false_pos(y_true, y_pred)))) return fitness From f917a72f4c7796883e08cc5e4dc18d2d9c320db0 Mon Sep 17 00:00:00 2001 From: Matthew Scholefield Date: Thu, 12 Jul 2018 17:03:48 -0500 Subject: [PATCH 07/10] Add bbopt to dependencies --- requirements.txt | 3 ++- setup.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 6bd8ee5..e919007 100644 --- a/requirements.txt +++ b/requirements.txt @@ -24,4 +24,5 @@ termcolor==1.1.0 typing==3.6.4 wavio==0.0.3 Werkzeug==0.14.1 -fitipy==0.1.1 \ No newline at end of file +fitipy==0.1.1 +bbopt==0.2.5 \ No newline at end of file diff --git a/setup.py b/setup.py index 833c155..76eb5f1 100644 --- a/setup.py +++ b/setup.py @@ -53,7 +53,8 @@ setup( 'prettyparse>=0.1.4', 'precise-runner', 'attrs', - 'fitipy' + 'fitipy', + 'bbopt' ], author='Matthew Scholefield', From 3549765a8480c158cf3fa364dc9dd1ede444c81c Mon Sep 17 00:00:00 2001 From: Matthew Scholefield Date: Thu, 12 Jul 2018 17:18:32 -0500 Subject: [PATCH 08/10] Move module level code into main function --- precise/scripts/train_optimize.py | 127 +++++++++++++++--------------- 1 file changed, 65 insertions(+), 62 deletions(-) diff --git a/precise/scripts/train_optimize.py b/precise/scripts/train_optimize.py index 7615f67..696fa9c 100644 --- a/precise/scripts/train_optimize.py +++ b/precise/scripts/train_optimize.py @@ -28,16 +28,6 @@ from precise.functions import weighted_log_loss from precise.params import pr from precise.train_data import TrainData -bb = BlackBoxOptimizer(file=__file__) - -# Loading in data to train -data = TrainData.from_both('/home/mikhail/wakewords/wakewords/files/tags.txt', - '/home/mikhail/wakewords/wakewords/files', - '/home/mikhail/wakewords/wakewords/not-wake-word/generated') -(train_inputs, train_outputs), (test_inputs, test_outputs) = data.load() - -test_data = (test_inputs, test_outputs) - def false_pos(yt, yp) -> Any: from keras import backend as K @@ -49,70 +39,83 @@ def false_neg(yt, yp) -> Any: return K.sum(K.cast((1 - yp) * (0 + yt) > 0.5, 'float')) / K.sum(0 + yt) -# goodness metric for optimization -def goodness(y_true, y_pred) -> Any: - from math import exp - try: - param_score = 1.0 / (1.0 + exp((model.count_params() - 11000) / 2000)) - except OverflowError: - param_score = 1.0 / (1.0 + Decimal(exp((model.count_params() - 11000)) / 2000)) - fitness = param_score * ( - ((1.0 - (0.05 * false_neg(y_true, y_pred))) - (0.95 * false_pos(y_true, y_pred)))) - return fitness +def main(): + bb = BlackBoxOptimizer(file=__file__) + # Loading in data to train + data = TrainData.from_both('/home/mikhail/wakewords/wakewords/files/tags.txt', + '/home/mikhail/wakewords/wakewords/files', + '/home/mikhail/wakewords/wakewords/not-wake-word/generated') + (train_inputs, train_outputs), (test_inputs, test_outputs) = data.load() -for i in range(5): - if __name__ == "__main__": + test_data = (test_inputs, test_outputs) + + for i in range(5): bb.run(backend="random") - print("\n= %d = (example #%d)" % (i + 1, len(bb.get_data()["examples"]) + 1)) + print("\n= %d = (example #%d)" % (i + 1, len(bb.get_data()["examples"]) + 1)) - shuffle_ids = numpy.arange(len(test_inputs)) - numpy.random.shuffle(shuffle_ids) - (test_inputs, test_outputs) = (test_inputs[shuffle_ids], test_outputs[shuffle_ids]) + shuffle_ids = numpy.arange(len(test_inputs)) + numpy.random.shuffle(shuffle_ids) + (test_inputs, test_outputs) = (test_inputs[shuffle_ids], test_outputs[shuffle_ids]) - model_array = numpy.empty(len(test_data), dtype=int) - with h5py.File('tested_models.hdf5', 'w') as f: - f.create_dataset('dataset_1', data=model_array) - f.close() + model_array = numpy.empty(len(test_data), dtype=int) + with h5py.File('tested_models.hdf5', 'w') as f: + f.create_dataset('dataset_1', data=model_array) + f.close() - batch_size = bb.randint("batch_size", 1000, 5000, guess=3000) + batch_size = bb.randint("batch_size", 1000, 5000, guess=3000) - model = Sequential() - model.add(GRU(units=bb.randint("units", 1, 100, guess=50), activation='linear', - input_shape=(pr.n_features, pr.feature_size), - dropout=bb.uniform("dropout", 0.1, 0.9, guess=0.6), name='net')) - model.add(Dense(1, activation='sigmoid')) + model = Sequential() + model.add(GRU(units=bb.randint("units", 1, 100, guess=50), activation='linear', + input_shape=(pr.n_features, pr.feature_size), + dropout=bb.uniform("dropout", 0.1, 0.9, guess=0.6), name='net')) + model.add(Dense(1, activation='sigmoid')) - model.compile('rmsprop', weighted_log_loss, metrics=['accuracy']) + model.compile('rmsprop', weighted_log_loss, metrics=['accuracy']) - from keras.callbacks import ModelCheckpoint + # goodness metric for optimization + def goodness(y_true, y_pred) -> Any: + from math import exp + try: + param_score = 1.0 / (1.0 + exp((model.count_params() - 11000) / 2000)) + except OverflowError: + param_score = 1.0 / (1.0 + Decimal(exp((model.count_params() - 11000)) / 2000)) + fitness = param_score * ( + ((1.0 - (0.05 * false_neg(y_true, y_pred))) - (0.95 * false_pos(y_true, y_pred)))) + return fitness - checkpoint = ModelCheckpoint('tested_models.hdf5', monitor='val_loss', - save_best_only=True) + from keras.callbacks import ModelCheckpoint - train_history = model.fit(train_inputs, train_outputs, batch_size=batch_size, epochs=100, - validation_data=(test_inputs, test_outputs), - callbacks=[checkpoint]) - test_loss, test_acc = model.evaluate(test_inputs, test_outputs) + checkpoint = ModelCheckpoint('tested_models.hdf5', monitor='val_loss', + save_best_only=True) - predictions = model.predict(test_inputs) - num_false_positive = numpy.sum(predictions * (1 - test_outputs) > 0.5) - num_false_negative = numpy.sum((1 - predictions) * test_outputs > 0.5) - false_positives = num_false_positive / numpy.sum(test_outputs < 0.5) - false_negatives = num_false_negative / numpy.sum(test_outputs > 0.5) + train_history = model.fit(train_inputs, train_outputs, batch_size=batch_size, epochs=100, + validation_data=(test_inputs, test_outputs), + callbacks=[checkpoint]) + test_loss, test_acc = model.evaluate(test_inputs, test_outputs) - bb.remember({ - "test loss": test_loss, - "test accuracy": test_acc, - "false positive%": false_positives, - "false negative%": false_negatives - }) - print(false_positives) - print("False positive: ", false_positives * 100, "%") - bb.minimize(false_positives) - pprint(bb.get_current_run()) + predictions = model.predict(test_inputs) + num_false_positive = numpy.sum(predictions * (1 - test_outputs) > 0.5) + num_false_negative = numpy.sum((1 - predictions) * test_outputs > 0.5) + false_positives = num_false_positive / numpy.sum(test_outputs < 0.5) + false_negatives = num_false_negative / numpy.sum(test_outputs > 0.5) -best_example = bb.get_optimal_run() -print("\n= BEST = (example #%d)" % bb.get_data()["examples"].index(best_example)) -pprint(best_example) + bb.remember({ + "test loss": test_loss, + "test accuracy": test_acc, + "false positive%": false_positives, + "false negative%": false_negatives + }) + print(false_positives) + print("False positive: ", false_positives * 100, "%") + bb.minimize(false_positives) + pprint(bb.get_current_run()) + + best_example = bb.get_optimal_run() + print("\n= BEST = (example #%d)" % bb.get_data()["examples"].index(best_example)) + pprint(best_example) + + +if __name__ == '__main__': + main() From 7f915f939d90b6f10ed7806d092230934b145098 Mon Sep 17 00:00:00 2001 From: Matthew Scholefield Date: Thu, 12 Jul 2018 17:20:09 -0500 Subject: [PATCH 09/10] Remove unused variables --- precise/scripts/train_optimize.py | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/precise/scripts/train_optimize.py b/precise/scripts/train_optimize.py index 696fa9c..a1ae189 100644 --- a/precise/scripts/train_optimize.py +++ b/precise/scripts/train_optimize.py @@ -17,7 +17,6 @@ import h5py import numpy # Optimizer blackhat from bbopt import BlackBoxOptimizer -from decimal import * from keras.layers.core import Dense from keras.layers.recurrent import GRU from keras.models import Sequential @@ -74,25 +73,14 @@ def main(): model.compile('rmsprop', weighted_log_loss, metrics=['accuracy']) - # goodness metric for optimization - def goodness(y_true, y_pred) -> Any: - from math import exp - try: - param_score = 1.0 / (1.0 + exp((model.count_params() - 11000) / 2000)) - except OverflowError: - param_score = 1.0 / (1.0 + Decimal(exp((model.count_params() - 11000)) / 2000)) - fitness = param_score * ( - ((1.0 - (0.05 * false_neg(y_true, y_pred))) - (0.95 * false_pos(y_true, y_pred)))) - return fitness - from keras.callbacks import ModelCheckpoint checkpoint = ModelCheckpoint('tested_models.hdf5', monitor='val_loss', save_best_only=True) - train_history = model.fit(train_inputs, train_outputs, batch_size=batch_size, epochs=100, - validation_data=(test_inputs, test_outputs), - callbacks=[checkpoint]) + model.fit(train_inputs, train_outputs, batch_size=batch_size, epochs=100, + validation_data=(test_inputs, test_outputs), + callbacks=[checkpoint]) test_loss, test_acc = model.evaluate(test_inputs, test_outputs) predictions = model.predict(test_inputs) From 651901143d8a521a75c1c66a044ec42a893a52bb Mon Sep 17 00:00:00 2001 From: Matthew Scholefield Date: Thu, 12 Jul 2018 17:24:01 -0500 Subject: [PATCH 10/10] Add precise-train-optimize alias for train_optimize.py --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 76eb5f1..343c679 100644 --- a/setup.py +++ b/setup.py @@ -37,6 +37,7 @@ setup( 'precise-test=precise.scripts.test:main', 'precise-test-pocketsphinx=precise.pocketsphinx.scripts.test:main', 'precise-train=precise.scripts.train:main', + 'precise-train-optimize=precise.scripts.train_optimize:main', 'precise-train-sampled=precise.scripts.train_sampled:main', 'precise-train-incremental=precise.scripts.train_incremental:main', ]