elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Perceptron Simple en C (Redes Neuronales)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Perceptron Simple en C (Redes Neuronales)  (Leído 9,204 veces)
Dext3rCode

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Perceptron Simple en C (Redes Neuronales)
« en: 14 Diciembre 2015, 20:33 pm »

He aqui un pequeño codigo que hice iniciando en esto de las redes neuronales, no esta muy organizado el codigo ya que solo es para probar el funcionamiento...
Es un Perceptron simple-monocapa que entrena con los patrones que le ofrecemos en el vector "result[]" (OPERACIONES AND Y OR SEGUN EL VECTOR) y luego de estar entrenado con los pesos sinampticos ajustados, es capaz de entregar una salida correcta para los valores de entrada.
Si tienen alguna sugerencia o mejoramiento para la funcionalidad del codigo no duden en avisarme, Gracias!!!.

Para cambiar  a OR: el vector result debe ser  {1,1,1,-1} es decir, un vector con los valores de salida que queremos(patrones).
Código:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>

void Perceptron(){
srand(time(NULL));
float intervalos[] = {-0.98,-0.876,-0.654,-0.754,0.453,0.953,-0.322,-0.298,-0.11,-0.065,0.0234,0.232,0.2335,0.4674,0.675,0.7883, 0.752,0.823,0.9876};
float Umbral,defumbral,factor;
int i;
int x1[] = {1,1,-1,-1};
int x2[] = {1,-1,1,-1};
int result[] = {1,-1,-1,-1};
float w[2] = {intervalos[rand() % 18],intervalos[rand() % 18]};
factor = intervalos[rand() % 18];
Umbral = intervalos[rand() % 18];
defumbral = 1;
int verdad = 0;
int op;
int cont = 0;
int n = 0;
//////////// ENTRENAMIENTO DEL PERCEPTRON;
while(verdad == 0){
n++;
for(i=0;i<4;i++){
op = ((x1[i]*w[0])+(x2[i]*w[1])) + (defumbral*Umbral);
if(op >= 0){
op = 1;
}
else{
op = -1;
}
if(op != result[i]){
w[0] = w[0] + (2*factor)*(x1[i]*result[i]);
w[1] = w[1] + (2*factor)*(x2[i]*result[i]);
Umbral = Umbral + (2*factor)*(defumbral*result[i]);
}
}
for(i=0;i<4;i++){
op = ((x1[i]*w[0])+(x2[i]*w[1])) + (defumbral*Umbral);
if(op == result[i]){
cont++;
}
if(cont == 4){
verdad = 1;
}
}
if(n > 200){
printf("[!] Demasiadas epocas realizadas!\n");
printf("[!] Intente nuevamente con otros pesos sinapticos.\n");
exit(1);
}
}
/////////// MOSTRAR RESULTADOS FINALES
system("clear");
printf("\n[*] FINALIZANDO ENTRENAMIENTO...\n");
printf("[*] PERCEPTRON SIMPLE [ENTRENADO]\n");
printf("\n--------------- DATOS FINALES --------------------------------\n\n");
printf("[*] Total de epocas: (%i)\n",n);
printf("[*] Peso Sinaptico 1 w[1]\t\t--> %2.2f\n",w[0]);
printf("[*] Peso Sinaptico 2 w[2]\t\t--> %2.2f\n",w[1]);
printf("[*] Umbral(Polarizacion)\t\t--> %2.2f\n",Umbral);
printf("\n\n--------------- VERFICIACION DE ENTRENAMIENTO ------------------\n\n");
for(i=0;i<4;i++){
op = ((x1[i]*w[0])+(x2[i]*w[1])) + (defumbral*Umbral);
if(op >= 0){
op = 1;
}
else{
op = -1;
}
printf("\n[*] Entradas: (%2i,%2i) --> Salida: %2i",x1[i],x2[i],op);
if(op != result[i]){
system("clear");
printf("\n[!] Demasiadas epocas realizadas!\n");
printf("[!] Intente nuevamente con otros pesos sinapticos.\n");
exit(1);
Perceptron();
}
}
}
int main(int argc, char **argv)
{
Perceptron();
return 0;
}

En Git-hub: https://github.com/Dext3rLab/C-Examples/blob/master/Perceptron_Simple.c


« Última modificación: 15 Diciembre 2015, 22:27 pm por Dext3rCode » En línea

kondrag_X1

Desconectado Desconectado

Mensajes: 157


Ver Perfil
Re: Perceptron Simple en C (Redes Neuronales)
« Respuesta #1 en: 15 Diciembre 2015, 15:36 pm »

muy currado yo estudié redes neuronales en la carrera y no tiene nada que ver la orientación que se le da en practicas y teoria con las aplicaciones que puede tener


En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Perceptron Simple en C (Redes Neuronales)
« Respuesta #2 en: 15 Diciembre 2015, 19:54 pm »

Gracias por el aporte, me está interesando este tema  ;D
En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Redes Neuronales
Programación Visual Basic
Ian~Shadow 2 2,364 Último mensaje 1 Junio 2007, 19:29 pm
por SPYRE
Necesito orientacion :: Perceptron simple (ANN - RNA). Desde cero. xD
Programación General
Hadess_inf 5 6,195 Último mensaje 31 Agosto 2010, 18:13 pm
por [D4N93R]
consumo sistemas de redes neuronales
Foro Libre
crazykenny 9 4,503 Último mensaje 4 Abril 2012, 05:35 am
por flacc
redes neuronales
.NET (C#, VB.NET, ASP)
solkan05 0 2,733 Último mensaje 10 Julio 2012, 15:40 pm
por solkan05
Perceptron simple
Programación General
morgane 3 3,539 Último mensaje 17 Septiembre 2012, 01:47 am
por [Case]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines