Guarda come scaricare robot di trading gratuitamente
Ci trovi su Telegram!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Sistemi Esperti

Esempio di utilizzo di un modello ONNX per riconoscere i numeri scritti a mano - sistema esperto per MetaTrader 5

Visualizzazioni:
225
Valutazioni:
(9)
Pubblicato:
2023.11.23 16:22
mnist.onnx (25.83 KB)
Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

Un Expert Advisor in grado di riconoscere le cifre scritte a mano

Il database MNIST è composto da 60.000 immagini per l'addestramento e 10.000 immagini per i test. Queste immagini sono state create "rimescolando" un set originale NIST di campioni in bianco e nero di 20x20 pixel, che a loro volta sono stati ottenuti dall'US Census Bureau e integrati con i campioni di test prelevati da studenti delle scuole superiori americane. I campioni sono stati normalizzati alla dimensione di 28x28 pixel e sottoposti ad anti-alias, che ha introdotto i livelli di scala di grigio.

Il modello addestrato di riconoscimento delle cifre scritte a mano mnist.onnx è stato scaricato da Github da Model Zoo (opset 8). Chi è interessato può scaricare e provare altri modelli, esclusi i modelli con opset 1, che non sono più supportati dall'ultimo runtime ONNX. Sorprendentemente, il vettore di output non è stato elaborato con la funzione di attivazione Softmax, comune nei modelli di classificazione. Tuttavia, questo non è un problema; possiamo facilmente implementarlo da soli.

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("value ",predict," predicted with probability ",result[predict]);

   return(predict);
  }


 Disegna le cifre in una griglia speciale utilizzando il mouse, tenendo premuto il pulsante sinistro. Per riconoscere la cifra disegnata, premere il pulsante CLASSIFY.




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]
value 5 predicted with probability 0.11471312493085861
Per qualche motivo, la precisione del riconoscimento è notevolmente inferiore per il numero nove (9). Le cifre inclinate a sinistra vengono riconosciute in modo più accurato.


Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/47225

BinanceQuotesDownloader BinanceQuotesDownloader

Display Binance quotes in real-time mode

DCC / Piercing DCC / Piercing

DCC / Piercing

Candlestick Wick Imbalance Candlestick Wick Imbalance

Candlestick Wick Imbalance

Sample program for async/sync all close. Sample program for async/sync all close.

This is a simple program to compare asynchronous and synchronous all close. It is a sample program, so feel free to modify it for your own testing purposes, such as adding conditions.