Warning: session_start(): open(/var/lib/php/sessions/sess_q04a1c6bkns988ic14d325oals, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
cmodule PerceptronSpike > DynPrintLog {
sclass Example {
double[] inputs;
int answer;
*() {}
*(double x, double y, int a) {
inputs = new double[] {x, y, 1};
answer = a;
}
}
int nExamples = 20;
L examples;
double[] weights;
double c = 0.00001;
start-thread {
if (empty(examples))
setField(examples := repF(nExamples, () -> {
int x = rand(640), y = rand(360);
ret new Example(x, y, y < f(x) ? -1 : 1);
}));
weights = new double[l(first(examples).inputs)];
for i over weights: weights[i] = random(-1.0, 1.0);
for i to 10:
print("Error: " + train() + ", weights: " + sfu(weights));
}
double train() {
double error = 0;
for (Example e : examples) error += train(e);
ret error/l(examples);
}
// function to be learned
private double f(double x) {
ret x * 0.7 + 40;
}
int feedForward(double[] inputs) {
double sum = 0;
for i over weights: sum += inputs[i] * weights[i];
ret activate(sum);
}
int activate(double s) {
return s > 0 ? 1 : -1;
}
double train(Example e) {
int guess = feedForward(e.inputs);
double error = e.answer - guess;
for i over weights: weights[i] += c * error * e.inputs[i];
ret error;
}
}