コード例 #1
0
ファイル: main.py プロジェクト: JandersonLira/PAIC
'''
Created on 22 de ago de 2016

@author: paic-elloa-janderson
'''
from perceptron import Perceptron
if __name__ == '__main__':
    p = Perceptron()
    p.setValues()
    n = 0
    while(n < p.getQtdInput()):
        p.calculateU(n)
        p.calculateOutput()
        p.calculateError(n)
        if(p.getError() != 0):
            p.adjustWeigth(n)
            print("Pesos: ",p.weigth)
            n = -1
        n = n + 1
コード例 #2
0
ファイル: main.py プロジェクト: GonzaloHirsch/sia-tps
def trainSingle(config, trainingInput, labels, trainingInputTest, labelsTest):
    # Create with shape because of N points of M components being NxM
    perceptron = Perceptron(trainingInput.shape[1], config.activation, config.learningRate, config.beta, config.momentum, config.alpha)
    # For graphing
    weights.append(perceptron.getWeights())

    # Define output file and prepare output
    filenameWeights = OUTPUT_DIR + ('run_input%s_%s_%s_%s.csv' % (trainingInput.shape[0], config.activation, config.learningRate, time.time()))
    filenameErrors = OUTPUT_DIR + ('run_errors%s_%s_%s_%s.csv' % (trainingInput.shape[0], config.activation, config.learningRate, time.time()))
    filenameTrain = OUTPUT_DIR + ('run_train%s_%s_%s_%s.csv' % (trainingInput.shape[0], config.activation, config.learningRate, time.time()))
    filenameTest = OUTPUT_DIR + ('run_test%s_%s_%s_%s.csv' % (trainingInput.shape[0], config.activation, config.learningRate, time.time()))
    prepareOutput(filenameWeights, OUTPUT_WEIGHTS_FIELDNAMES)
    prepareOutput(filenameErrors, OUTPUT_ERRORS_FIELDNAMES)
    prepareOutput(filenameTrain, OUTPUT_METRICS_FIELDNAMES if config.calculateMetrics else OUTPUT_ACCURACY_FIELDNAMES)
    prepareOutput(filenameTest, OUTPUT_METRICS_FIELDNAMES if config.calculateMetrics else OUTPUT_ACCURACY_FIELDNAMES)

    trainingSize = trainingInput.shape[0]
    iterations = 0
    error = 1
                
    try:
        while iterations < config.iterations and error > config.error:
            stdout.write("Epoch #" + str(iterations) + "\r")
            stdout.flush()
            # Getting a random index order
            indexes = getRandomDatasetOrder(trainingSize)

            for x_i in indexes:
                # Make the prediction
                summation, prediction = predict(perceptron, trainingInput[x_i])

                # Correct Perceptron weights.
                perceptron.correctWeights(trainingInput[x_i], labels[x_i], prediction, summation)
            
            # Calculate error.
            error = 0
            for inputs, label in zip(trainingInput, labels):
                summation, prediction = predict(perceptron, inputs)
                error += perceptron.calculateError(label, prediction)
            errors.append(error[0])
            weights.append(perceptron.getWeights())

            # Calculate metrics
            accuracy, errorMetric, precision, recall, f1 = testPerceptron(perceptron, trainingInput, labels, config.delta, calculateMetrics=config.calculateMetrics)
            trainMetrics.append([accuracy, precision, recall, f1] if config.calculateMetrics else [accuracy])
            accuracy, errorMetric, precision, recall, f1 = testPerceptron(perceptron, trainingInputTest, labelsTest, config.delta, calculateMetrics=config.calculateMetrics)
            testMetrics.append([accuracy, precision, recall, f1] if config.calculateMetrics else [accuracy])

            iterations += 1

        # Write output
        with open(filenameWeights, 'a') as csv_file:
            # Get instance of the writer
            csv_writer = csv.DictWriter(csv_file, fieldnames=OUTPUT_WEIGHTS_FIELDNAMES)
            writeAllWeights(csv_writer)

        # Write errors
        with open(filenameErrors, 'a') as csv_file:
            # Get instance of the writer
            csv_writer = csv.DictWriter(csv_file, fieldnames=OUTPUT_ERRORS_FIELDNAMES)
            writeAllErrors(csv_writer)

        print("\n\n######################\nTESTING\n######################")

        print("Training Results:")
        accuracy, error, precision, recall, f1 = testPerceptron(perceptron, trainingInput, labels, config.delta, True, calculateMetrics=config.calculateMetrics)
        printMetrics(accuracy, error, precision, recall, f1)
        with open(filenameTrain, 'a') as csv_file:
            # Get instance of the writer
            csv_writer = csv.DictWriter(csv_file, fieldnames=OUTPUT_METRICS_FIELDNAMES if config.calculateMetrics else OUTPUT_ACCURACY_FIELDNAMES)
            if config.calculateMetrics:
                writeAllMetrics(csv_writer, trainMetrics)
            else:
                writeAccuracyMetrics(csv_writer, trainMetrics)

        print("Learning Results:")
        accuracy, error, precision, recall, f1 = testPerceptron(perceptron, trainingInputTest, labelsTest, config.delta, True, calculateMetrics=config.calculateMetrics)
        printMetrics(accuracy, error, precision, recall, f1)
        with open(filenameTest, 'a') as csv_file:
            # Get instance of the writer
            csv_writer = csv.DictWriter(csv_file, fieldnames=OUTPUT_METRICS_FIELDNAMES if config.calculateMetrics else OUTPUT_ACCURACY_FIELDNAMES)
            if config.calculateMetrics:
                writeAllMetrics(csv_writer, testMetrics)
            else:
                writeAccuracyMetrics(csv_writer, testMetrics)

    except KeyboardInterrupt:
        print("Finishing up...")