|
|
| |
/*
* Neuron.cpp
* Copyright (C) 2000 Janusz Gregorczyk
* jgregor@kki.net.pl
*/
#include <cstdlib>
#include <cmath>
#include <string>
using namespace std;
#include "
Neuron.h"
/* ====================================================== */
/* zwraca losową liczbę z danego zakresu */
inline double RAND(double lo, double hi) {
return (double(rand()) / RAND_MAX) * (hi - lo) + lo;
}
Neuron::Neuron(int n) {
input.resize(n); weight.resize(n); dWeight.resize(n);
/* wagi inicjalizujemy niewielką wartością losową */
for (int i = 0; i < inputs(); i++) {
weight[i] = RAND(-0.5, 0.5);
dWeight[i] = 0.0;
}
activation = 0.0; threshold = 1.0;
}
void Neuron::propagate() {
activation = 0.0;
/* oblicz ważoną sumę wejść... */
for (int i = 0; i < inputs(); i++) {
activation += weight[i] * input[i];
}
/* ... i uwzględnij próg */
activation += threshold;
/* oblicz wartość funkcji przejścia */
/* i jej pierwszej pochodnej */
switch (activationFunction) {
case Linear:
output = activation;
dOutput = 1.0;
break;
case Sigmoid:
default:
output = 1.0 / (1.0 + exp(-activation));
dOutput = output * (1.0 - output);
}
}
void Neuron::setInput(const std::vector<double>& x) {
for (int i = 0; i < inputs(); i++) {
input[i] = x[i];
}
}
/* ====================================================== */
|
|
 |
| Proponujemy |
|
|
Dla AMD architektura x86-64 ma stanowić trampolinę do skoku na obszary zajmowane dotychczas przez Intela i byłych potentatów serwerowych. Samo opanowanie luki, jaką obecnie stanowi klasa stacji roboczych, byłoby już ogromnym sukcesem, firma z Sunnyvale mierzy jednak znacznie wyżej. Zdecydowana większość skoków z trampoliny to, pomimo wysokiego odbicia i efektownych ewolucji, skoki w dół. Jak może to wyglądać w przypadku AMD? - zainteresowanych odsyłamy do tekstu "Trampolina na 64 bity".
|
|
|
 |
|
|
 |
|
|
 |
|