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


 


Tema destacado:


  Mostrar Temas
Páginas: [1] 2
1  Programación / Programación General / Neftis - Redes Neuronales Artificiales en: 18 Septiembre 2020, 20:47
Neftis
Artificial Neural Network Framework


Hola, buen día.
Hacía mucho que no ingresaba a la comunidad porque estaba trabajando en un proyecto muy importante para mí, tanto a nivel personal como profesional. Y hoy es un enorme gusto para mí el poder mostrárselos. Aún queda mucho por hacer, pero es lo suficientemente maduro para ser utilizado sin muchos inconvenientes (espero), pues no he tenido los recursos para probarlo en hardware distinto al de mi propia máquina. Dejo este post aquí porque, aún cuando el proyecto actualmente está hecho para funcionar únicamente en .NET Framework, mi idea es poder adaptarlo a otros lenguajes de programación y otros SOs distintos a Windows. Espero que a más de uno le sea de utilidad, pues ese es el propósito de lo que hacemos nosotros como programadores, crear algo que sea útil.
Neftis, como dice el título del post, es un marco de trabajo para la creación, entrenamiento y ejecución de redes neuronales artificiales. El objetivo de Neftis es proporcionar un entorno de trabajo que sea rápido y fácil de utilizar, pero que al mismo tiempo sea flexible y sencillo de aprender, con reglas bien definidas, una programación intuitiva y objetos concretos para llevar a cabo cada una de las tareas necesarias en cada etapa del desarrollo de un sistema que implemente una o múltiples redes neuronales artificiales.
Con Neftis primero construimos un modelo neuronal en base a una descripción formal de la red neuronal. Ejemplo: Si la red neuronal tiene 3 capas y su respectivo número de neuronas es, 2 neuronas en la capa de entrada, 3 neuronas en la capa oculta y 1 neurona en la capa de salida [2, 3, 1] y conectadas en una estructura Madaline, entonces la creamos de la siguiente manera:

Código
  1. NeuralNetwork redNeuronal = new NeuralNetwork();
  2. NeuralNetwork redNeuronal.CreateMadaline(new int[] {2, 3, 1);

El siguiente paso es cargar los datos de entrenamiento en una estructura de datos con dos campos, inputs y outputs que son cada uno un arreglo unidimensional de enteros del mismo tamaño que la primera (inputs) y última (outputs) capa de la red neuronal. Después se carga otro conjunto de datos con la misma estructura, que será utilizado por la red neuronal para validar el entrenamiento de la misma.

Código
  1. public struct STRUCT_InputOutputValuePairs
  2. {
  3. public string Id;
  4. public float[] InputValues;
  5. public float[] OutputValues;
  6. }

Después se definen los parámetros de entrenamiento y se entrena la red neuronal. Los parámetros a definir son los siguientes:

AutoSaveFilestringFile name and path for the auto save file.
BatchSizeInt32Training values evaluated before weights change.
LearningReasonfloatIncrement at which neural network learns.
MaxAgeInt32Max age every generation should reach if the neural network doesn’t reach the NetworkErrorMargin value.
MaxGenerationInt32Max generation the training process will reach if the neural network doesn’t reach the NetworkErrorMargin value.
NetworkErrorMarginfloatThe error that the neural network must reach before the training process stops.
RandomWeightsboolTells if the weights must be randomized. If the training is continuing with a previous training this should be set to false, otherwise training progress will be erased.
SaveEveryNAgesInt32Interval between every autosave the training process made of the neural network if is > 0.
TestCasesInputsAndOuputsSTRUCT_InputOutputValuePairs[]Data sets to test training progress between ages.
TestOutputMarginfloatMargin at the output neurons value.
TrainingInputsAndOutputsSTRUCT_InputOutputValuePairs[]Training values array.
UseGPUboolUse GPU device for training. If is true and there is no GPU device training wont start.

Una vez que la red neuronal ha sido entrenada se guarda en un archivo de red neuronal.

Código
  1. // Training.
  2.    NeuralNetworkTrainer trainer = new NeuralNetworkTrainer();
  3. STRUCT_TrainingParameters trainingParameters = new STRUCT_TrainingParameters {
  4.        BatchSize = Convert.ToInt32(Txt_BatchSize.Text),
  5.        TrainingInputsAndOutputs = Inputs,
  6.        LearningReason = learnningReazon,
  7.        MaxAge = maxAges,
  8.        SaveEveryNAges = 0,
  9.        AutoSaveFile = "",
  10.        MaxGeneration = maxGeneration,
  11.        NetworkErrorMargin = 0.01f,
  12.        RandomWeights = true,
  13.        TestCasesInputsAndOuputs = testInputs,
  14.        TestOutputMargin = 0.1f,
  15.        UseGPU = false
  16.    };
  17. // Write the results.
  18.    Neftis.ENUM_StartTrainingResult result = trainer.StartTraining(RedNeuronal, trainingParameters);

En la aplicación que va hacer uso de la red neuronal se carga la estructura de la red neuronal ya entrenada, se establecen los valores de entrada y se procede a evaluar los valores de salida.

En el sitio web pueden ver códigos de ejemplo, incluyendo código generado con una función de Neftis que genera código para Arduino a partir de un modelo entrenado.
Neftis es de uso libre (no código abierto). Y cualquiera puede usarlo, ya sea en un proyecto personal o comercial. Si desean apoyar o contribuir al proyecto, en el sitio web vienen las formas de hacerlo, también si tienen dudas, preguntas o desean aportar al proyecto de otra manera, pueden escribirme al correo  neftisprojectcontact@gmail.com.

Muchas gracias a todos. Sigamos programando.

2  Informática / Electrónica / DuinO'Clock - Tarjeta de desarrollo DIY en: 7 Noviembre 2018, 03:04
https://www.pcbway.com/project/shareproject/DuinO_Clock.html

Hola a todos los entusiastas de la electrónica.

Les dejo el enlace a un proyecto que realicé hace unas semanas. La idea original era únicamente la de realizar un sencillo reloj que mostrara la hora mediante 12 diodos led para indicar la hora y cada 5 minutos, y otros 4 leds para los minutos del 1 al 4. Es decir, que para mostrar las 12:10, parpadea el reloj situado a las 12, después parpadea el led de las 2. Luego, para mostrar las 12:12, parpadea el led de las 12, después parpadea el led de las 2 y después el segundo led del grupo de 4 leds.



Pero el diseño original fue modificado para que no sólo pudiera mostrar la hora o hacer las funciones de un reloj, sino que puede ser usado como tarjeta de desarrollo y agregar sensores y otras salidas, así como comunicación SPI y USB.

El circuito está basado en el Atmega328P, y el proyecto original fue hecho con un Arduino Nano. Si les gusta el proyecto, les agradecería mucho, en verdad mucho, su like y compartan el enlace del proyecto que dejé al inicio del post. Ahí podrán encontrar toda la información y el código. Después intentaré añadir otras funciones al código original. También pueden descargar el PCB u ordenar la fabricación del mismo desde el enlace por sólo $5 USD.

Importante: Si encuentran algún error en los diagramas por favor avísenme para hacer las correcciones necesarias. Si tienen alguna duda, por favor pregúntenme.
3  Foros Generales / Foro Libre / Compartir mi libro en: 16 Diciembre 2016, 03:08
Buen día a todos.

El día de hoy quiero compartir con ustedes un una historia que escribí hace tiempo y que (por tiempo limitado) pongo a su disposición de manera gratuita. Es un relato corto de tipo fantástico. A continuación les dejo la descripción completa así como los enlaces. Espero que sea de su agrado y disfruten de leerla tanto como yo al escribirla.



Abelardo es un hombre joven y triste que perdió a la mujer que ama y, aunque ha pasado un año desde que ella murió, él se empeña en hundirse en su melancolía, en sus recuerdos, en sus posesiones personales y en hacer de cuenta que ella aún habla con él. Pero entonces, una fría noche de Octubre, Abelardo recibe la inesperada visita de una hermosa mujer quien dice ser de La Muerte y, que lo despierta a medianoche sólo para informarle que él ha muerto y que el tiempo se ha detenido. Ahora Abelardo deberá enfrentar la noticia de su propia muerte al mismo tiempo que re-descubre lo que fue su vida, las cosas que todavía son suyas y qué ocurrió con la mujer que amó.



México: https://www.amazon.com.mx/dp/B01MXDBAUH

España: https://www.amazon.es/dp/B01MXDBAUH
4  Programación / .NET (C#, VB.NET, ASP) / Obtener el nombre de la función que ejecuta un hilo. en: 18 Febrero 2016, 07:36
Hola. Buen día.

No encuentro la manera de obtener el nombre del método que está ejecutando un hilo en particular.

Ya busqué dentro de la clase ProcessThread pero creo que esa clase no me da esa información.

Muchas gracias por su ayuda.
5  Foros Generales / Foro Libre / Tres obras de arte en: 23 Diciembre 2015, 21:16
Hola, comunidad.

Quiero compartirles tres de las obras de arte que e pintado y/o dibujado. Dos de ellas están en venta y la otra (por el momento) sólo está de exhibición.

http://benjamin3ro.artelista.com/

Si alguna de las obras les ha gustado, me harían un gran favor compartiendo el enlace.

Gracias y feliz navidad.

6  Programación / .NET (C#, VB.NET, ASP) / [APORTE] Pingadoo: Aplicación cliente ping. en: 30 Agosto 2015, 20:46
Saludos, colegas programadores.

Les traigo el código fuente de una aplicación tipo "cliente ping" que nos puede servir para monitorear el estado de nuestros sitios web, u otros sitios (servers) que nos interesen.

En la descripción del video viene el enlace al código fuente. Si tienen sugerencias o encuentran bugs no duden en comentar.

Que tengan un buen día.

7  Programación / .NET (C#, VB.NET, ASP) / Eliminar dll que estoy usando en: 5 Agosto 2015, 09:31
Hola, buen día. Actualmente estoy trabajando en un proyecto donde importo un ensamblado y hago una instancia de una clase definida en ese ensamblado. La cuestión es que tengo un botón cuya acción es borrar el archivo de dicha dll, sin embargo el método File.Delete() me arroja una excepción de tipo UnauthorizedAccessException. He intentado eliminar la instancia que tengo de dicha clase dentro del ensamblado, pero al parecer esto no es suficiente. ¿Cómo puedo hacerlo, si es que puedo?
8  Programación / PHP / Thumnails jpeg en negro, pero sólo algunas. en: 5 Junio 2015, 21:34
Hola, buen día. El día de ayer hice un script que hace uso de imagecreatefromjpeg() e imagecopyresampled() para generar miniaturas. En mi servidor local crea las imágenes a la perfección, sin embargo en el servidor de mi proveedor de hosting unas imágenes las genera bien y otras no. Ahora bien, siempre son las mismas imágenes.

versión PHP local: 5.2

versión PHP proveedor hosting: 5.4.25
9  Foros Generales / Foro Libre / Mi opinión sobre el bullying en: 30 Octubre 2014, 19:12
En mi país tenemos un dicho: "El que se enoja pierde"

Señores, miembros del staff y usuarios comunes y corrientes como yo:

Me disculpo si no es el lugar indicado para poner esto, pero el tema del usuario graphixx (o algo así) ya está cerrado y no quería quedarme con las ganas de decirles una cosa. ;)

Es necesario para el ser humano discutir con sus semejantes, de verdad lo necesitamos. Y la manera más sana de hacerlo es verbalmente o por escrito. Incluso debería haber un subforo para que la gente se tire ***** entre si y se desestrese (no sé si escribí bien esta última palabra XD). No estoy justificando el mentado bullying lo que digo es que debemos tener el suficiente criterio para ignorar lo que no nos sirve (la ***** que nos tiran) de los comentarios objetivos... o, participar de igual manera tirando *****. Además las cosas no siempre son lo que parecen y generalmente todo está en la mente de quien lo interpreta.

Insisto: "El que se enoja pierde", así que no se enojen. Y la próxima vez que se sientan agredidos, hagan una de dos cosas: ignoren, o participen. Que me imagino que ya todos aquí estamos bastante grandecitos. ;)

Un saludo y besos y abrazos gays para todos. XD
10  Programación / Programación General / Habrá concurso de aplicaciones este año? en: 21 Agosto 2014, 06:39
Me estaba preguntando si este año habrá un concurso de aplicaciones como el año pasado. No sé si alguien más se estaba preguntando lo mismo.
Páginas: [1] 2
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines