Un Expert Advisor per il Riconoscimento delle Cifre Scritte a Mano
Il database MNIST è composto da 60.000 immagini utilizzate per l'addestramento e 10.000 per il test. Queste immagini sono state create "ri-mixando" un set originale NIST di campioni in bianco e nero di 20x20 pixel, ottenuti dal Bureau del Censimento degli Stati Uniti e arricchiti con campioni di test prelevati da studenti delle scuole superiori americane. I campioni sono stati normalizzati a una dimensione di 28x28 pixel e sono stati applicati filtri per migliorare la qualità, introducendo livelli di scala di grigi.
Il modello di riconoscimento delle cifre scritte a mano mnist.onnx è stato scaricato da Github dal Model Zoo (opset 8). Chi è interessato può scaricare e provare altri modelli, escludendo quelli con opset 1, che non è più supportato dall'ultima runtime di ONNX. Sorprendentemente, il vettore di output non è stato elaborato con la funzione di attivazione Softmax, come è comune nei modelli di classificazione. Ma non preoccupatevi, possiamo implementarlo facilmente noi stessi.
int PredictNumber(void)
{
static matrixf image(28,28);
static vectorf result(10);
PrepareMatrix(image);
if(!OnnxRun(ExtModel,ONNX_DEFAULT,image,result))
{
Print("OnnxRun errore ",GetLastError());
return(-1);
}
result.Activation(result,AF_SOFTMAX);
int predict=int(result.ArgMax());
if(result[predict]<0.8)
Print(result);
Print("valore ",predict," previsto con probabilità ",result[predict]);
return(predict);
}
Disegna le cifre in una griglia speciale utilizzando il mouse, tenendo premuto il pulsante sinistro. Per riconoscere la cifra disegnata, premi il pulsante CLASSIFICA.

Se la probabilità ottenuta per la cifra riconosciuta è inferiore a 0.8, il vettore risultante con le probabilità per ciascuna classe viene stampato nel log. Ad esempio, prova a classificare un campo di input vuoto non compilato.
[0.095331445,0.10048489,0.10673151,0.10274081,0.087865397,0.11471312,0.094342403,0.094900772,0.10847695,0.09441267]
valore 5 previsto con probabilità 0.11471312493085861
Per qualche motivo, l'accuratezza del riconoscimento è notevolmente inferiore per il numero nove (9). Le cifre inclinate a sinistra vengono riconosciute con maggiore precisione.
Post correlati
- MQL5 Wizard: Creare Trading Signals con Morning/Evening Stars e MFI per MetaTrader 5
- Utilizzare MQL5 Wizard per generare segnali di trading: Hammer e Hanging Man con CCI
- MQL5 Wizard: Strategia di Trading con Dark Cloud Cover/Piercing Line e RSI
- MQL5 Wizard: Crea Expert Advisor per segnali di trading basati su Dark Cloud Cover e Piercing Line con CCI
- MQL5 Wizard: Crea Signal Trading con Hammer e Hanging Man + Stochastic per MetaTrader 5