#include <cstdio>
#include <time.h>
#include <algorithm>
#include <limits>
#include <vector>
float rand(float min, float max)
{
return float(std::rand()) / float(std::numeric_limits<unsigned long>::max()) * (max - min) + min;
}
struct Perceptron
{
struct Neuron
{
float weight;
Neuron()
{
weight = rand(-1, 1);
}
};
std::vector<Neuron> neurons;
std::vector<float> input;
std::vector<float> hidden;
std::vector<float> output;
float lrate;
Perceptron(int i, int h, int o)
{
int layer_size[] = { i, h, o };
input.resize(i);
hidden.resize(h);
output.resize(o);
neurons.resize(i * o);
}
std::vector<float> process(std::vector<float> data)
{
return output;
}
void present(std::vector<float> data)
{
input = data;
for(std::size_t i = 0; i < input.size(); ++i)
{
input[i] = data[i];
for(std::size_t h = 0; h < hidden.size(); ++h)
{
hidden[h] = input[i] *
}
}
}
void teach(std::vector<float> data)
{
}
};
int main()
{
puts("Perceptron - testing AND gate\n");
srand((unsigned) time (NULL));
Perceptron perc(2, 1, 1);
std::vector<float> input;
std::vector<float> correct;
input.push_back(1); input.push_back(0);
correct.push_back(0);
puts("Learning 1 AND 0...");
perc.present(input);
for(int i = 0; i < 100; ++i)
{
perc.teach(correct);
}
float result = perc.process(input);
printf("Result: %f\n", result);
return 0;
}