diff options
Diffstat (limited to 'train.py')
-rwxr-xr-x | train.py | 20 |
1 files changed, 14 insertions, 6 deletions
@@ -2,7 +2,10 @@ # Author: Vasil Zlatanov, Nunzio Pucci # EE4 Pattern Recognition coursework # -# usage: train.py [-h] -i DATA -o MODEL [-m M] +# usage: train.py [-h] -i DATA [-m EIGEN] [-M REIGEN] [-e ENSEMBLE] [-b] +# [-R RANDOM] [-n NEIGHBORS] [-f FACES] [-c] [-s SEED] +# [-t SPLIT] [-2] [-p] [-l] [-r RECONSTRUCT] [-cm] [-q] [-pr] +# [-alt] import warnings with warnings.catch_warnings(): @@ -126,7 +129,8 @@ def test_model(M, faces_train, faces_test, target_train, target_test, args): faces_train = np.dot(faces_train, e_vecs.T) faces_test = np.dot(faces_test, e_vecs.T) - rec_vecs = np.add(np.tile(average_face, (faces_test.shape[0], 1)), np.dot(faces_test, e_vecs) * deviations_tr) + rec_vecs = np.add(np.tile(average_face, + (faces_test.shape[0], 1)), np.dot(faces_test, e_vecs) * deviations_tr) distances = LA.norm(raw_faces_test - rec_vecs, axis=1); if args.reconstruct: @@ -211,7 +215,8 @@ def main(): parser.add_argument("-t", "--split", help="Fractoin of data to use for testing", type=float, default=0.3) ### best split for lda = 22 ### best plit for pca = 20 - parser.add_argument("-2", "--grapheigen", help="Swow 2D graph of targets versus principal components", action='store_true') + parser.add_argument("-2", "--grapheigen", help="Swow 2D graph of targets versus principal components", + action='store_true') parser.add_argument("-p", "--pca", help="Use PCA", action='store_true') parser.add_argument("-l", "--lda", help="Use LDA", action='store_true') parser.add_argument("-r", "--reconstruct", help="Use PCA reconstruction, specify face NR", type=int, default=0) @@ -248,7 +253,8 @@ def main(): distances = np.zeros((n_faces, faces_test.shape[0])) for i in range(n_faces): - target_pred, distances[i] = test_model(args.eigen, faces_train[i], faces_test, target_train[i], target_test, args) + target_pred, distances[i] = test_model(args.eigen, faces_train[i], + faces_test, target_train[i], target_test, args) target_pred = np.argmin(distances, axis=0) elif args.reigen: target_pred = np.zeros((args.reigen-args.eigen, target_test.shape[0])) @@ -257,7 +263,8 @@ def main(): for M in range(args.eigen, args.reigen): start = timer() - target_pred[M - args.eigen], rec_error[M - args.eigen] = test_model(M, faces_train, faces_test, target_train, target_test, args) + target_pred[M - args.eigen], rec_error[M - args.eigen] = test_model(M, faces_train, + faces_test, target_train, target_test, args) end = timer() print("Run with", M, "eigenvalues completed in ", end-start, "seconds") print("Memory Used:", psutil.Process(os.getpid()).memory_info().rss) @@ -273,7 +280,8 @@ def main(): rec_error = np.zeros((args.ensemble, n_faces, faces_test.shape[0])) target_pred = np.zeros((args.ensemble, target_test.shape[0])) for i in range(args.ensemble): - target_pred[i], rec_error[i] = test_model(args.eigen, faces_train_ens[i], faces_test, target_train, target_test, args) + target_pred[i], rec_error[i] = test_model(args.eigen, faces_train_ens[i], + faces_test, target_train, target_test, args) target_pred_comb = np.zeros(target_pred.shape[1]) target_pred = target_pred.astype(int).T |