def main(): # load training data # training data can be recorded using chapter7.py in training mode (X_train, y_train), (X_test, y_test), _, _ = homebrew.load_data( "datasets/faces_training.pkl", num_components=50, test_split=0.2, save_to_file="datasets/faces_preprocessed.pkl", seed=42) if len(X_train) == 0 or len(X_test) == 0: print "Empty data" raise SystemExit # convert to numpy X_train = np.squeeze(np.array(X_train)).astype(np.float32) y_train = np.array(y_train) X_test = np.squeeze(np.array(X_test)).astype(np.float32) y_test = np.array(y_test) # find all class labels labels = np.unique(np.hstack((y_train, y_test))) # prepare training num_features = len(X_train[0]) num_classes = len(labels) params = dict(term_crit=(cv2.TERM_CRITERIA_COUNT, 300, 0.01), train_method=cv2.ANN_MLP_TRAIN_PARAMS_BACKPROP, bp_dw_scale=0.001, bp_moment_scale=0.9) saveFile = 'params/mlp.xml' # find best MLP configuration print "---" print "1-hidden layer networks" best_acc = 0.0 # keep track of best accuracy for l1 in xrange(10): # gradually increase the hidden-layer size layerSizes = np.int32( [num_features, (l1 + 1) * num_features / 5, num_classes]) MLP = MultiLayerPerceptron(layerSizes, labels) print layerSizes MLP.fit(X_train, y_train, params=params) (acc, _, _) = MLP.evaluate(X_train, y_train) print " - train acc = ", acc (acc, _, _) = MLP.evaluate(X_test, y_test) print " - test acc = ", acc if acc > best_acc: # save best MLP configuration to file MLP.save(saveFile) best_acc = acc
def main(): # load training data # training data can be recorded using chapter7.py in training mode (X_train, y_train), (X_test, y_test), _, _ = homebrew.load_data( "datasets/faces_training.pkl", num_components=50, test_split=0.2, save_to_file="datasets/faces_preprocessed.pkl", seed=42) if len(X_train) == 0 or len(X_test) == 0: print "Empty data" raise SystemExit # convert to numpy X_train = np.squeeze(np.array(X_train)).astype(np.float32) y_train = np.array(y_train) X_test = np.squeeze(np.array(X_test)).astype(np.float32) y_test = np.array(y_test) # find all class labels labels = np.unique(np.hstack((y_train, y_test))) # prepare training num_features = len(X_train[0]) num_classes = len(labels) params = dict(term_crit=(cv2.TERM_CRITERIA_COUNT, 300, 0.01), train_method=cv2.ANN_MLP_TRAIN_PARAMS_BACKPROP, bp_dw_scale=0.001, bp_moment_scale=0.9) saveFile = 'params/mlp.xml' # find best MLP configuration print "---" print "1-hidden layer networks" best_acc = 0.0 # keep track of best accuracy for l1 in xrange(10): # gradually increase the hidden-layer size layerSizes = np.int32([num_features, (l1 + 1) * num_features/5, num_classes]) MLP = MultiLayerPerceptron(layerSizes, labels) print layerSizes MLP.fit(X_train, y_train, params=params) (acc, _, _) = MLP.evaluate(X_train, y_train) print " - train acc = ", acc (acc, _, _) = MLP.evaluate(X_test, y_test) print " - test acc = ", acc if acc > best_acc: # save best MLP configuration to file MLP.save(saveFile) best_acc = acc
def main(): (X_train, y_train), (X_test, y_test), _, _ = homebrew.load_data( load_from_folder="/datasets", num_components=50, test_split=0.2, save_to_file="datasets/faces_preprocessed.pkl", seed=42) if len(X_train) == 0 or len(X_test) == 0: print "Empty data" raise SystemExit X_train = np.squeeze(np.array(X_train)).astype(np.float32) y_train = np.array(y_train) X_test = np.squeeze(np.array(X_test)).astype(np.float32) y_test = np.array(y_test) labels = np.unique(np.hstack((y_train, y_test))) print X_train.shape num_features = len(X_train[0]) print num_features num_classes = len(labels) print num_classes params = dict(term_crit=(cv2.TERM_CRITERIA_COUNT, 300, 0.01), train_method=cv2.ANN_MLP_TRAIN_PARAMS_BACKPROP, bp_dw_scale=0.001, bp_moment_scale=0.9) saveFile = 'params/mlp.xml' print "---" print "1-hidden layer networks" best_acc = 0.0 for l1 in xrange(20): layerSizes = np.int32([ num_features, (l1 + 1) * num_features / 5, (l1 + 1) * num_features / 10, num_classes ]) MLP = MultiLayerPerceptron(layerSizes, labels) print layerSizes MLP.fit(X_train, y_train, params=params) (acc, _, _) = MLP.evaluate(X_train, y_train) print " - train acc = ", acc (acc, _, _) = MLP.evaluate(X_test, y_test) print " - test acc = ", acc if acc > best_acc: MLP.save(saveFile) best_acc = acc