Estoy investigando el uso de redes neuronales artificiales (ANN) para predecir las velocidades de reacción en mi fluido en lugar de resolver el sistema completo de EDO rígidas. Algunas personas de mi laboratorio ya han trabajado en eso, así que no empiezo desde cero, pero tengo problemas con mis aplicaciones. Creo que uno de ellos se relaciona con la calidad de mi conjunto de datos para la capacitación. Por lo general, extraemos datos de entrenamiento de simulaciones CFD que son 1D / 2D / 3D. No importa qué, terminamos con una matriz multidimensional de datos para alimentar a la red neuronal. Para darle una idea del tamaño del problema, estoy buscando entrenar 8 redes con 10 entradas y 1 salida para cada una. Siento que un conjunto de entrenamiento de aproximadamente 100,000 puntos sería razonable, pero el problema es que estos 100,000 puntos necesitan cubrir una región específica de mi espacio multidimensional.
- Para cada instantánea, solo una pequeña porción de los puntos se encuentra en la región donde necesito una muestra alta para asegurarme de que mi entrenamiento sea preciso
- A medida que recopilo instantáneas juntas, termino con muchos puntos casi duplicados que (creo) tienen un efecto negativo en mi entrenamiento ANN al a) sesgar el entrenamiento al poner más peso en estas regiones b) agregar puntos innecesarios.
Así que he estado tratando de filtrar los puntos que grabo antes de incluirlos en mi conjunto de entrenamiento. A mi modo de ver, eso implica verificar si un nuevo punto está dentro de un cierto radio n-dimensional de cada punto de mi conjunto de datos. Este enfoque de fuerza bruta, que salvo algunas escalas de trucos como n ^ 2, funciona de manera regular para extraer 10,000 puntos de 100,000 (toma 30 minutos, por ejemplo) pero se descompone a medida que aumento los tamaños y números de las instantáneas ... Claramente , debe haber una forma más inteligente de hacerlo, pero no estoy seguro de en qué dirección comenzar a buscar. Primero probé con python y pude pasar a FORTRAN para acelerar las cosas, pero siento que primero debería buscar una mejor estrategia. ¿Es mi única esperanza algún tipo de árbol kd? Tengo poca o ninguna experiencia con ellos y el problema que veo es que mi árbol crecerá a medida que construya mi conjunto de datos y esto solo puede aumentar la complejidad. ¿Una biblioteca de árbol de python kd satisfaría mis necesidades? ¿Debería mudarme a FORTRAN dado el tamaño de mi problema? Cualquier consejo es apreciado, gracias!