def evaluating(eval_data): # Loading instances classes = 10 hidden_layers = 50 instance_nn = ClassNN(model_dir='/tmp/model', classes=classes, hidden_number=hidden_layers) print('Evaluating...') data = instance_nn.predict_model(eval_data[0]) print(data) data = instance_nn.predict_model(eval_data[1]) print(data) start = time.time() data = instance_nn.predict_model(eval_data[2]) end = time.time() print(data) print('Time elapsed: {0}'.format(end - start)) print('Done evaluating')
def main(): print('Initializing main function') print('Loading datasets') train_data, train_labels = ClassImageDataSet.load_train_mnist() eval_data, eval_labels = ClassImageDataSet.load_eval_mnist() print('PCA with training data') n_features = 18 pca = PCA(n_components=n_features, svd_solver='randomized').fit(train_data) train_pca = pca.transform(train_data) n_classes = 10 hidden_neurons = 100 eval_pca = pca.transform(eval_data) print('Printing shapes') print(train_data.shape) print(train_pca.shape) model_dir = '/tmp/model_example_pca' classifier = ClassNN(model_dir, n_classes, hidden_neurons) var = input('Set 1 to train, 2 to predict. Otherwise to eval ') if var == '1': print('Training model') classifier.train_model(train_pca, train_labels) elif var == '2': print('Predict model') print('Total elements: ' + str(eval_pca.shape[0])) index = 1100 eval_item = eval_pca[index] print(eval_item.shape) result = classifier.predict_model(eval_item) print('Result obtained: ' + str(result['classes'])) print('Print probabilities') print(result['probabilities']) print('Real result: ' + str(eval_labels[index])) else: print('Evaluating model') classifier.eval_model(eval_pca, eval_labels) print('Done!')
def classify_images(list_folder_data: list, type_desc: EnumDesc): classes_number = 0 cont = True while cont: cont = False for folder_data in list_folder_data: if folder_data[2] == classes_number: classes_number += 1 cont = True break hidden_number = 60 learning_rate = 0.005 steps = 20000 # Initialize classifier instance nn_classifier = ClassNN(model_dir=ClassNN.model_dir_pose, classes=classes_number, hidden_number=hidden_number, learning_rate=learning_rate) results = ClassLoadDescriptors.load_pose_descriptors(type_desc) training_data_np = results['trainingData'] training_labels_np = results['trainingLabels'] eval_data_np = results['evalData'] eval_labels_np = results['evalLabels'] training_files_np = results['trainingFiles'] eval_files_np = results['evalFiles'] label_names = results['labelNames'] # Prompt for user input selection = input('Training selected {0}. ' 'Press 1 to train, 2 to evaluate, 3 to predict, 4 to save csv, ' '5 to get confusion matrix: '.format(type_desc)) if selection == '1': # Training nn_classifier.train_model(train_data=training_data_np, train_labels=training_labels_np, label_names=label_names, steps=steps) # Evaluate after training nn_classifier.eval_model(eval_data_np, eval_labels_np) elif selection == '2': # Evaluate nn_classifier.eval_model(eval_data_np, eval_labels_np) elif selection == '3': # Predict # Select data to eval data_eval = eval_data_np[0] label_eval = eval_labels_np[0] results = nn_classifier.predict_model(data_eval) print('Predict data np: {0}'.format(results)) print('Expected data np: {0}'.format(label_eval)) elif selection == '4': # Saving file in csv total_data = np.concatenate((training_data_np, eval_data_np), axis=0) total_labels = np.concatenate((training_labels_np, eval_labels_np), axis=0) total_files = np.concatenate((training_files_np, eval_files_np)) # Add new axis to allow concatenation total_labels = total_labels[:, np.newaxis] total_files = total_files[:, np.newaxis] total_np = np.concatenate((total_data, total_labels), axis=1) print('Saving data to CSV in file {0}'.format(csv_dir)) np.savetxt(csv_dir, total_np, delimiter=',', fmt='%10.10f') np.savetxt(csv_dir_files, total_files, delimiter=',', fmt='%s') print('Saving training data') # Concatenate with new axis total_np_train = np.concatenate((training_data_np, training_labels_np[:, np.newaxis]), axis=1) total_np_eval = np.concatenate((eval_data_np, eval_labels_np[:, np.newaxis]), axis=1) # Saving np.savetxt(csv_train, total_np_train, delimiter=',', fmt='%10.10f') np.savetxt(csv_eval, total_np_eval, delimiter=',', fmt='%10.10f') print('Done writing file in CSV') elif selection == '5': print('Getting confusion matrix') confusion_np = np.zeros((classes_number, classes_number)) for i in range(eval_data_np.shape[0]): data = eval_data_np[i] expected = eval_labels_np[i] obtained = nn_classifier.predict_model_fast(data) class_prediction = obtained['classes'] print('Class: {0}'.format(class_prediction)) confusion_np[expected, class_prediction] += 1 print('Confusion matrix') print(confusion_np) print('Labels: {0}'.format(label_names)) else: raise Exception('Option not supported')