Rejoignez notre page de fans
Exemple d'utilisation d'un modèle ONNX pour reconnaître des chiffres manuscrits - expert pour MetaTrader 5
- Vues:
- 308
- Note:
- Publié:
- 2023.11.27 08:55
- Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
Un Expert Advisor capable de reconnaître des chiffres manuscrits
La base de données MNIST se compose de 60 000 images pour la formation et de 10 000 images pour le test. Ces images ont été créées en "remixant" un ensemble original d'échantillons noir et blanc de 20x20 pixels du NIST, eux-mêmes obtenus auprès du US Census Bureau et complétés par des échantillons de test prélevés sur des lycéens américains. Les échantillons ont été normalisés à une taille de 28x28 pixels et anti-aliasés (sans crénelage), ce qui a permis d'introduire des niveaux de gris.
Le modèle de reconnaissance de chiffres manuscrits mnist.onnx a été téléchargé de Github à partir de Model Zoo (opset 8). Les personnes intéressées peuvent télécharger et essayer d'autres modèles, à l'exception des modèles avec opset 1, qui n'est plus supporté par le dernier runtime ONNX. Il est surprenant de constater que le vecteur de sortie n'a pas été traité avec la fonction d'activation Softmax, comme c'est souvent le cas dans les modèles de classification. Ce n'est toutefois pas un problème ; nous pouvons facilement le mettre en œuvre nous-mêmes.
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); }
Dessinez les chiffres dans une grille spéciale à l'aide de la souris, en maintenant le bouton gauche de la souris enfoncé. Pour reconnaître le chiffre dessiné, appuyez sur la touche CLASSIFY.
Si la probabilité obtenue pour le chiffre reconnu est inférieure à 0,8, le vecteur résultant avec les probabilités pour chaque classe est imprimé dans le journal. Par exemple, essayez de classer un champ de saisie vide et non rempli.
[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.11471312493085861Pour une raison ou une autre, la précision de la reconnaissance est nettement inférieure pour le chiffre neuf (9). Les chiffres inclinés à gauche sont reconnus avec plus de précision.
Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/47225
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.
Candlestick Wick ImbalanceCandlestick Wick Imbalance
Horizontal Grid Controller with KeyEvents
Envelopes beginner tutorial By William210Envelopes beginner tutorial to learn how to code in MQL5