Esempio n. 1
0
    def test_vgg(self, objData, normalize=False):

        if normalize is True:
            objData.normalization(self.normalization_max)

        count_success = 0
        prob_predicted = []
        plot_predicted = []

        label_total = []
        prob_total = np.random.random((0, self.num_class))

        print('\n# TEST VGG TRAINED')
        for i in range(objData.total_batchs_complete):
            batch, label = objData.generate_batch()
            prob = self.sess.run(self.probVGG, feed_dict={self.x_batch: batch})

            label_total = np.concatenate((label_total, label), axis=0)
            prob_total = np.concatenate((prob_total, prob), axis=0)

            # Acumulamos la presicion de cada iteracion, para despues hacer un promedio
            count, prob_predicted, plot_predicted = utils.process_prob(
                label,
                prob,
                predicted=prob_predicted,
                plot_predicted=plot_predicted)
            count_success = count_success + count
            objData.next_batch_test()

        # promediamos la presicion total
        print('\n# STATUS:')
        y_true = objData.labels
        y_prob = prob_predicted
        utils.metrics_multiclass(y_true, y_prob)
def test_model(net, sess_test, objData):
    total = objData.total_images
    count_success = 0
    count_by_class = np.zeros([net.num_class, net.num_class])

    prob_predicted = []
    plot_predicted = []
    label_total = []
    prob_total = np.random.random((0, net.num_class))

    print('\n# PHASE: Test classification')
    for i in range(objData.total_batchs_complete):
        batch, label = objData.generate_batch()
        prob, layer = sess_test.run([net.prob, net.relu6], feed_dict={vgg_batch: batch, train_mode: False})

        label_total = np.concatenate((label_total, label), axis=0)
        prob_total = np.concatenate((prob_total, prob), axis=0)

        # save output of a layer
        # utils.save_layer_output(layer, label, name='Train_SNC4_relu6', dir='../data/features/')
        # utils.save_layer_output_by_class(layer, label, name='Train_SNC4', dir='../data/features/')

        count, prob_predicted, plot_predicted = utils.process_prob(label, prob, predicted=prob_predicted,
                                                                   plot_predicted=plot_predicted)
        count_success = count_success + count
        objData.next_batch_test()

    # promediamos la presicion total
    print('\n# STATUS:')
    y_true = objData.labels
    y_prob = prob_predicted
    accuracy_final = utils.metrics_multiclass(y_true, y_prob)

    return accuracy_final
def test_model(net, sess_test, objData, plot_result=False):

    count_success = 0
    prob_predicted = []
    plot_predicted = []

    label_total = []
    prob_total = np.random.random((0, net.num_class))

    # Iteraciones por Batch, en cada iteracion la session de tensorflow procesa los 'n' datos de entrada
    print('\n# PHASE: Test classification')
    for i in range(objData.total_batchs_complete):

        batch, label = objData.generate_batch()
        prob = sess_test.run(net.net['prob'],
                             feed_dict={
                                 mlp_batch: batch,
                                 train_mode: False
                             })

        label_total = np.concatenate((label_total, label), axis=0)
        prob_total = np.concatenate((prob_total, prob), axis=0)

        # Acumulamos la presicion de cada iteracion, para despues hacer un promedio
        count, prob_predicted, plot_predicted = utils.process_prob(
            label,
            prob,
            predicted=prob_predicted,
            plot_predicted=plot_predicted)
        count_success = count_success + count
        objData.next_batch_test()

    # promediamos la presicion total
    print('\n# STATUS:')
    y_true = objData.labels
    y_prob = prob_predicted

    accuracy_total = utils.metrics(y_true, y_prob, plot_predicted, plot_result)
    # if plot_result is True:
    #     utils.precision_recall(y_true=label_total, y_prob=prob_total, num_class=net.num_class)

    return accuracy_total