machine-learning - recurrente - redes neuronales python
Estructura de red neuronal (5)
Ha pasado un tiempo, pero recuerdo que la velocidad suele ser solo un problema durante el entrenamiento de la red neuronal.
Actualmente estoy construyendo una biblioteca de redes neuronales. Lo he construido como un gráfico de objetos para simplificar. Me pregunto si alguien puede cuantificar los beneficios de rendimiento de ir a un enfoque basado en arreglos. Lo que ahora tengo funciona muy bien para construir redes de complejidad casi arbitraria. Se admiten redes regulares (backpropped) y redes recurrentes. Considero que las redes entrenadas se "compilan" en una forma "más simple", como las matrices.
Solo quería ver si alguien 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 de tener el producto final como una matriz en lugar de un gráfico de objetos?
La huella de la memoria PS es menos importante que la velocidad.
Las personas han comenzado a usar las técnicas de GPGPU en IA, y tener su red neuronal en forma de matriz podría aprovechar las operaciones de matriz mucho más rápidas en su tarjeta gráfica típica.
No tengo ninguna experiencia personal escribiendo una biblioteca así, pero puedo vincularlo con algunos proyectos populares de código abierto de los que quizás pueda aprender. (Personalmente, solo usaría una de estas bibliotecas existentes).
Todo esto depende del idioma que esté usando, supongo que está utilizando una derivada C.
En mis implementaciones, he encontrado que el enfoque del gráfico de objetos es muy superior. Existe 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 la velocidad de entrenamiento o la velocidad de resolución también ... ¿Estoy asumiendo 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 sub redes de redes, creo que es aún más importante estar basado en objetos, hace que sea mucho más fácil sacar porciones del trabajo.
Sin importar cómo lo implemente, nunca debe olvidar: