Estou pensando em usar redes neurais artificiais (RNA) para prever as taxas de reação no meu fluido, em vez de resolver o sistema completo de ODEs rígidas. Algumas pessoas do meu laboratório já fizeram algum trabalho para não começar do zero, mas estou tendo problemas com meus aplicativos. Acho que um deles diz respeito à qualidade do meu conjunto de dados para treinamento. Geralmente, extraímos dados de treinamento de simulações de CFD que são 1D / 2D / 3D. Não importa o que aconteça, acabamos com uma matriz multidimensional de dados para alimentar a rede neural. Para ter uma idéia do tamanho do problema, estou estudando o treinamento de 8 redes com 10 entradas e uma saída para cada uma. Sinto que um conjunto de treinamento de cerca de 100.000 pontos seria razoável, mas o problema é que esses 100.000 pontos precisam cobrir uma região específica do meu espaço multidimensional.
- Para cada instantâneo, apenas uma pequena parte dos pontos fica na região em que preciso de uma amostragem alta para garantir que meu treinamento seja preciso
- Ao compilar os instantâneos, acabo com muitos pontos quase duplicados que (acredito) têm um efeito negativo no meu treinamento da ANN: a) influenciando o treinamento colocando mais peso nessas regiões; b) adicionando pontos desnecessários.
Então, eu tentei filtrar os pontos que gravei antes de incluí-los no meu conjunto de treinamento. A meu ver, isso envolve verificar se um novo ponto está dentro de um determinado raio n-dimensional de cada ponto do meu conjunto de dados. Essa abordagem de força bruta, com exceção de alguns truques, como n ^ 2, funciona mais ou menos para extrair 10.000 pontos de 100.000 (leva 30 minutos, digamos), mas se decompõe à medida que eu aumento os tamanhos e números dos instantâneos ... Claramente , deve haver uma maneira mais inteligente de fazer isso, mas não sei em que direção começar a procurar. Tentei pela primeira vez com python e poderia mudar para o FORTRAN para acelerar as coisas, mas acho que devo procurar uma estratégia melhor primeiro. Minha única esperança é algum tipo de árvore kd? Tenho pouca ou nenhuma experiência com eles e o problema que vejo é que minha árvore crescerá à medida que construo meu conjunto de dados e isso só pode aumentar a complexidade. Uma biblioteca em árvore python kd se adequa à minha necessidade? Devo mudar para FORTRAN, considerando o tamanho do meu problema? Qualquer conselho é apreciado, obrigado!