Unisciti alla nostra fan page

Esempio di utilizzo di un modello ONNX per riconoscere i numeri scritti a mano - sistema esperto per MetaTrader 5
- Visualizzazioni:
- 520
- Valutazioni:
- Pubblicato:
- 2023.11.23 16:22
-
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.11471312493085861Per 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

Candlestick Wick Imbalance

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.