Pregunta

Actualmente estoy construyendo una biblioteca de red neuronal. Lo he construido como un gráfico de objetos por simplicidad. Me pregunto si alguien puede cuantificar los beneficios de rendimiento de ir a un enfoque basado en una matriz. Lo que tengo ahora funciona muy bien para construir redes de complejidad casi arbitraria. Se admiten redes regulares (respaldadas) así como redes recurrentes. Estoy considerando tener redes capacitadas "compilar" en algunos "más simple" forma como matrices.

Solo quería ver si alguien por ahí tenía algún consejo práctico o experiencia en la construcción de redes neuronales que se implementaran bien en la producción. ¿Hay algún beneficio en que el producto final se base en una matriz en lugar de en un gráfico de objeto?

P.S La huella de la memoria es menos importante que la velocidad.

¿Fue útil?

Solución

Todo esto depende del lenguaje que esté utilizando. Supongo que está utilizando una derivada de C.

En mis implementaciones he encontrado que el enfoque del gráfico de objetos es muy superior. Hay cierta compensación en la velocidad, pero la facilidad de mantenimiento supera las llamadas de búsqueda de objetos. Todo esto depende de si estás buscando velocidad de entrenamiento o también resolviendo velocidad ... ¿Asumo que estás más preocupado por la velocidad de entrenamiento?

Siempre puede terminar micro-optimizando algunos de los problemas de llamadas a objetos si es necesario.

Teniendo en cuenta su motivo secundario de subred de las redes, creo que es aún más importante estar basado en objetos: hace que sea mucho más fácil sacar partes del trabajo.

Otros consejos

La gente ha comenzado a usar técnicas GPGPU en IA, y tener su red neuronal en forma de matriz podría aprovechar las operaciones matriciales mucho más rápidas en su tarjeta gráfica típica.

Independientemente de cómo lo implemente, nunca debe olvidar:

Solo asegúrese de no maximizarlo en lugar de minimizarlo

http://xkcd.com/534/

Ha pasado un tiempo, pero recuerdo que la velocidad suele ser solo un problema durante el entrenamiento de la Red Neural.

No tengo ninguna experiencia personal escribiendo una biblioteca de este tipo, pero puedo vincularlo a algunos proyectos populares de código abierto de los que quizás pueda aprender. (Personalmente, solo usaría una de estas bibliotecas existentes).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top