Existe uma maneira mais eficiente de construir redes neurais artificiais além de usar objetos como nós que fazem referência a outros objetos de nós?

As redes neurais recorrentes de conectividade livre podem ser representadas pela matriz de seus pesos sinápticos. Se você tiver N neurônios em sua rede, a rede poderá ser representada por uma matriz NxN em que o elemento (i, j) é o peso da conexão do neurônio i ao neurônio j (ou 0 se não houver conexão).

(Se sua rede tiver uma estrutura em camadas, você provavelmente deve refletir essa estrutura nos dados e armazenar as conectividades camada a camada como matrizes individuais.)

Se a sua rede estiver densamente conectada, a representação da matriz será muito mais eficiente em termos de memória do que as listas encadeadas (que é o que você descreve no título). Se você tiver uma conectividade esparsa usando uma representação de matriz “ingênua”, será um desperdício de espaço, mas sua matriz também será esparsa, e existem algumas ferramentas e bibliotecas específicas para trabalhar com matrizes esparsas.

Isso também permite que você trate a maioria das operações em uma rede neural como um problema de álgebra linear. A única parte não linear em uma rede neural geralmente é a função de ativação, e você pode paralelizar sua aplicação. Tudo isso já está implementado em muitas bibliotecas matemáticas em vários idiomas e provavelmente também resultará em um código muito mais rápido.