RNA
Hola,
Quiero programar una red neuronal que abra una persiana en tres niveles segun el nivel de luz,
mi salida desea es 0 para cerrada, 1 para entreabierta, 2 para abierto total.
Este el código:
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, char *argv[])
{
cout << system("cls") << "\n";
double Xi, u, e, Wij, vWij, r, Yr, P;
float Euler = 2.7182;
int k = 0, Yd;
cout << "Ingrese el nivel de luz: ";
cin >> Xi;
if (Xi >= 0){ // Salida deseada Esta función DEBE ser lógica más allá de evaluaar una variable y asignarlo UN valor
if (Xi <= 2){
Yd = 0;
}
else{
if (Xi >= 3){
if (Xi <= 5){
Yd = 1;
}
else{
if (Xi >= 6){
Yd = 2;
}
}
}
}
}
cout << "Su salida deseada es: " << Yd << "\n";
cout << "Ingrese un peso sinaptico: ";
cin >> Wij;
cout << "Ingrese una tasa de aprendizaje: ";
cin >> r;
while (e != 0){
k = k + 1;
u = Xi * Wij;
Yr = cos(u); // Función de activación
e = Yd - Yr;
vWij = r * e * Xi;
Wij = Wij + vWij;
cout << "Iteracion " << k << "(" << Yr << ")\n";
}
cout << "Su salida real es " << Yr << " obtenida en " << k << " iteraciones.\n\n";
cout << system("pause");
}
No se porque no funciona, puedo cambiar función de activación, los pesos sinapticos, tasa de aprendizaje y todo el disño a gusto me podrían ayudar porque con el código anterior no aprende para todos los casos
Quiero programar una red neuronal que abra una persiana en tres niveles segun el nivel de luz,
mi salida desea es 0 para cerrada, 1 para entreabierta, 2 para abierto total.
Este el código:
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, char *argv[])
{
cout << system("cls") << "\n";
double Xi, u, e, Wij, vWij, r, Yr, P;
float Euler = 2.7182;
int k = 0, Yd;
cout << "Ingrese el nivel de luz: ";
cin >> Xi;
if (Xi >= 0){ // Salida deseada Esta función DEBE ser lógica más allá de evaluaar una variable y asignarlo UN valor
if (Xi <= 2){
Yd = 0;
}
else{
if (Xi >= 3){
if (Xi <= 5){
Yd = 1;
}
else{
if (Xi >= 6){
Yd = 2;
}
}
}
}
}
cout << "Su salida deseada es: " << Yd << "\n";
cout << "Ingrese un peso sinaptico: ";
cin >> Wij;
cout << "Ingrese una tasa de aprendizaje: ";
cin >> r;
while (e != 0){
k = k + 1;
u = Xi * Wij;
Yr = cos(u); // Función de activación
e = Yd - Yr;
vWij = r * e * Xi;
Wij = Wij + vWij;
cout << "Iteracion " << k << "(" << Yr << ")\n";
}
cout << "Su salida real es " << Yr << " obtenida en " << k << " iteraciones.\n\n";
cout << system("pause");
}
No se porque no funciona, puedo cambiar función de activación, los pesos sinapticos, tasa de aprendizaje y todo el disño a gusto me podrían ayudar porque con el código anterior no aprende para todos los casos