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')
Exemple #2
0
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!')
Exemple #3
0
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')