Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma hdrstop
- #pragma argsused
- #ifdef _WIN32
- #include <tchar.h>
- #else
- typedef char _TCHAR;
- #define _tmain main
- #endif
- #include <algorithm>
- #include <stdio.h>
- #include <math.h>
- #include <iostream>
- using std::cin;
- using std::cout;
- using std::endl;
- double training_set_inputs[4][3];
- double training_set_outputs[4];
- double SynapticWeight[4], new_situation[3];
- double i,j,l, Output5, DOToutput5;
- double Boutput[5], BsigmoidPart[5], Bsigmoid_DerivativePart[5], BerrorPart[5], BadjustmentPart[5], BadjustSynapticWeight[4];
- int q;
- int _tmain(int argc, _TCHAR* argv[])
- {
- training_set_inputs[0][0]=0;training_set_inputs[0][1]=0;training_set_inputs[0][2]=1;
- training_set_inputs[1][0]=1;training_set_inputs[1][1]=1;training_set_inputs[1][2]=1;
- training_set_inputs[2][0]=1;training_set_inputs[2][1]=0;training_set_inputs[2][2]=1;
- training_set_inputs[3][0]=0;training_set_inputs[3][1]=1;training_set_inputs[3][2]=1;
- training_set_outputs[0]=0;
- training_set_outputs[1]=1;
- training_set_outputs[2]=1;
- training_set_outputs[3]=0;
- // Should be a random number between -1 and +1 ; fixed values b/c of example.
- SynapticWeight[1]=-0.16595599;
- SynapticWeight[2]=0.44064899;
- SynapticWeight[3]=-0.99977125;
- for( i = 1; i <= 10000; i++ ){
- //4 number of training sets
- for( q = 1; q <= 4; q++) {
- Boutput[q] = training_set_inputs[q-1][0]*SynapticWeight[1]+training_set_inputs[q-1][1]*SynapticWeight[2]+training_set_inputs[q-1][2]*SynapticWeight[3];
- BsigmoidPart[q] = 1 / (1 + exp(-(Boutput[q])));
- Bsigmoid_DerivativePart[q] = BsigmoidPart[q] * (1 - BsigmoidPart[q]);
- BerrorPart[q] = (training_set_outputs[q-1] - BsigmoidPart[q]);
- BadjustmentPart[q] = BerrorPart[q] * Bsigmoid_DerivativePart[q];
- }
- //3 number of synapses
- for( q = 1; q <= 3; q++) {
- BadjustSynapticWeight[q] = training_set_inputs[0][q-1]*BadjustmentPart[1]+training_set_inputs[1][q-1]*BadjustmentPart[2]+training_set_inputs[2][q-1]*BadjustmentPart[3]+training_set_inputs[3][q-1]*BadjustmentPart[4];
- SynapticWeight[q]=SynapticWeight[q]+BadjustSynapticWeight[q];
- }
- printf("\nTEST %.14f %.14f %.14f ADJUSTMENTS %.14f %.14f %.14f", SynapticWeight[1], SynapticWeight[2], SynapticWeight[3], BadjustSynapticWeight[1], BadjustSynapticWeight[2], BadjustSynapticWeight[3]);
- }
- new_situation[0]=1;new_situation[1]=0;new_situation[2]=0;
- Output5=new_situation[0]*SynapticWeight[1]+new_situation[1]*SynapticWeight[2]+new_situation[2]*SynapticWeight[3];
- DOToutput5 = 1 / (1 + exp(-(Output5)));
- printf("\n The output is currently %lf \n", DOToutput5);
- cout << "Press enter to exit..." << endl;
- cin.get();
- return 0;
- }
- // python and c++
- // ref: medium.com/technology-invention-and-more/how-to-build-a-simple-neural-network-in-9-lines-of-python-code-cc8f23647ca1
- // A.I. / Neural Network crude example
Advertisement
Add Comment
Please, Sign In to add comment