Skip to content

werasaimon/INerualNetwork

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

INerualNetwork

NerualNetwork Nerual Network Neuron

simple neuero network with C/C++ and QT Code

![DATASET MNIST] https://www.kaggle.com/oddrationale/mnist-in-csv

#include <QCoreApplication>
#include <QTime>
#include <iostream>

#include "NerualNetwork/INerualNetwork.h"


#define learningRate 0.4

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    //--- activation function
    auto sigmoida = [](float val) -> float {
        return (1.0 / (1.0 + exp(-val)));
    };
    
    //--- activation function derivative
    auto sigmoidasDerivate = [](float val) -> float {
        return (val * (1.0 - val));
    };

    INerualNetwork *NerualNet = new INerualNetwork(sigmoida,sigmoidasDerivate,{100,20,6,3,2});


    //----------------------------------INPUTS----GENERATOR-------------
    qsrand((QTime::currentTime().second()));
    float *abc = new float[100];
    for(int i=0; i<100;i++)
    {
        abc[i] =(qrand()%98)*0.01+0.01;
    }

    float *cba = new float[100];
    for(int i=0; i<100;i++)
    {
        cba[i] =(qrand()%98)*0.01+0.01;
    }


    //---------------------------------TARGETS----GENERATOR-------------
    float *target1 = new float[2];
    target1[0] =0.01;
    target1[1] =0.99;
    float *target2 = new float[2];
    target2[0] =0.99;
    target2[1] =0.01;


    //--------------------------------NN---------WORKING---------------
    int i=0;
    while(i<10000)
    {
        NerualNet->backPropagate(abc,target1,learningRate);
        NerualNet->backPropagate(cba,target2,learningRate);
        i++;
    }


    std::cout<<"\n ___________________RESULT ABC_____________ \n";
    float *output_neuron = NerualNet->feedForwarding(abc);
    for (int i = 0; i < NerualNet->getCountNeuronsOutput(); ++i)
    {
       std::cout << "neuron: " << i << "  " << output_neuron[i] << std::endl;
    }


    std::cout<<"\n ___________________RESULT CBA_____________ \n";
    float *output_neuron2 = NerualNet->feedForwarding(cba);
    for (int i = 0; i < NerualNet->getCountNeuronsOutput(); ++i)
    {
       std::cout << "neuron: " << i << "  " << output_neuron2[i] << std::endl;
    }

    delete NerualNet;
    NerualNet = nullptr;

    return a.exec();
}

#Output Console ...

 ___________________RESULT ABC_____________ 
neuron: 0  0.015719
neuron: 1  0.984323

 ___________________RESULT CBA_____________ 
neuron: 0  0.979305
neuron: 1  0.0206562
...

About

NerualNetwork Nerual Network Neuron

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published