Um Expert Advisor que Reconhece Dígitos Manuscritos
A base de dados MNIST é composta por 60.000 imagens para treinamento e 10.000 imagens para teste. Essas imagens foram criadas a partir de um conjunto original do NIST, com amostras em preto e branco de 20x20 pixels, coletadas do Censo dos EUA e complementadas com amostras de estudantes do ensino médio americanos. As amostras foram normalizadas para um tamanho de 28x28 pixels e passaram por um processo de suavização, o que introduziu níveis de cinza.
O modelo treinado para reconhecimento de dígitos manuscritos, mnist.onnx, foi baixado do Github, no Model Zoo (opset 8). Para quem se interessar, é possível baixar e testar outros modelos, exceto aqueles com opset 1, que não são mais suportados pela versão mais recente do ONNX. Curiosamente, o vetor de saída não foi processado com a função de ativação Softmax, como é comum em modelos de classificação. Mas não se preocupe, isso podemos implementar facilmente.
int PredictNumber(void)
{
static matrixf image(28,28);
static vectorf result(10);
PrepareMatrix(image);
if(!OnnxRun(ExtModel,ONNX_DEFAULT,image,result))
{
Print("OnnxRun error ",GetLastError());
return(-1);
}
result.Activation(result,AF_SOFTMAX);
int predict=int(result.ArgMax());
if(result[predict]<0.8)
Print(result);
Print("valor ",predict," previsto com probabilidade ",result[predict]);
return(predict);
}
Desenhe os dígitos em uma grade especial usando o mouse, mantendo o botão esquerdo pressionado. Para reconhecer o dígito desenhado, clique no botão CLASSIFICAR.

Se a probabilidade obtida para o dígito reconhecido for inferior a 0.8, o vetor resultante com as probabilidades de cada classe é impresso no log. Por exemplo, tente classificar um campo de entrada vazio.
[0.095331445,0.10048489,0.10673151,0.10274081,0.087865397,0.11471312,0.094342403,0.094900772,0.10847695,0.09441267]Por algum motivo, a precisão do reconhecimento é notavelmente menor para o número nove (9). Dígitos inclinados para a esquerda são reconhecidos com mais precisão.
valor 5 previsto com probabilidade 0.11471312493085861
Publicações relacionadas
- MACD Sample: Um Guia Prático para o Expert Advisor no MetaTrader 5
- Combo Trader: O EA Atualizado para MetaTrader 4
- Baixe Todo o Histórico de Ticks de um Símbolo no MetaTrader 5
- MasterMind 2: O Robô de Trading para MetaTrader 4 que Você Precisa Conhecer
- MACD Stochastic: Um Sistema de Trading para MetaTrader 5