Bibliotecas: Classe da Rede Neural MLP - página 2

 
elibrarius:

Comparando os resultados do treinamento da tabela de multiplicação, sua rede perde visivelmente. No ALGLIB, a rede 2,5,1 para 100 épocas de treinamento(https://www.mql5.com/ru/forum/8265/page2) dá respostas melhores do que a sua com 1000000 épocas. A velocidade de computação de 10000000000 épocas também não é agradável.

Aparentemente, o método de aprendizado não é muito eficiente. Ainda assim, obrigado por seu trabalho, pois é mais fácil de entender em um código pequeno do que no ALGLIB. Mas ainda precisamos avançar para lá.

comparação incorreta, todos os 100 exemplos são mostrados na variante alglib para aprendizado, por isso as respostas são mais corretas. acho que se você reduzir os exemplos com respostas em alglib, os resultados não serão melhores.

 

Olá, agradeço muito por você ter dedicado seu tempo para criar essa biblioteca nativa!

Tentei fazer uma codificação quente e adicionei relu à camada oculta e uma função Softmax à chamada da camada de saída. Funciona e produz um resultado total de 100%.

Mas o treinamento ficou bagunçado, mesmo ao voltar para o Sigmoud. O iRprop não é adequado para classificação? Ele fornece praticamente o mesmo resultado, independentemente da entrada. Às vezes muda, mas não muito.


A segunda pergunta é que vejo que o Tanh e o Sigmod são tratados de forma diferente no método Lern. Ainda não entendi essa parte do código, mas qual deles é apropriado para o Relu?

 
Thanks for this amazing contribuition... May you explain how can I determine the permissive error?
 
northedan:
Thanks for this amazing contribuition... May you explain how can I determine the permissive error?
//+------------------------------------------------------------------+
//| Learn                                                            |
//+------------------------------------------------------------------+
void CNetMLP::Learn(int c_npat,       // number of teaching patterns
                    double &c_inp[],  // input data
                    double &c_res[],  // output data
                    int c_nep,        // number of learning epochs
                    double c_err)     // permissible error