Fan sayfamıza katılın
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
El yazısı sayıları tanımak için bir ONNX modeli kullanma örneği - MetaTrader 5 için Uzman Danışman
- Görüntülemeler:
- 232
- Derecelendirme:
- Yayınlandı:
- 2023.11.29 13:40
- Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git
El yazısı rakamları tanıyabilen bir Uzman Danışman
MNIST veritabanı eğitim için 60.000, test için ise 10.000 görüntü içermektedir. Bu görüntüler, 20x20 piksellik siyah-beyaz örneklerden oluşan orijinal NIST kümesinin "yeniden karıştırılması" ile oluşturulmuştur (bu örnekler ABD Nüfus Sayım Bürosu'ndan elde edilmiş ve Amerikalı lise öğrencilerinden alınan test örnekleri ile desteklenmiştir). Örnekler 28x28 piksel boyutuna normalize edilmiş ve gri tonlama seviyeleri eklenerek kenar yumuşatması yapılmıştır.
Eğitilmiş el yazısı rakam tanıma modeli mnist.onnx, Github'daki Model Zoo’dan (opset 8) indirilmiştir. İlgilenenler, en son ONNX çalışma zamanı tarafından artık desteklenmeyen opset 1'li modeller hariç, diğer modelleri indirip deneyebilirler. Şaşırtıcı bir şekilde, çıktı vektörü, sınıflandırma modellerinde yaygın olduğu gibi Softmax aktivasyon fonksiyonu ile işlenmemiştir. Ancak bu bir sorun değildir; bunu kendimiz de kolayca uygulayabiliriz.
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); }
Fareyi kullanarak (farenin sol tuşuna basılı tutarak) özel ızgarada rakamlar çizin. Çizilen rakamı tanımak için CLASSIFY düğmesine basın.
Tanınan rakam için elde edilen olasılık 0,8'den azsa, her sınıf için olasılıkları içeren sonuç vektörü günlüğe yazdırılır. Örneğin, doldurulmamış boş bir giriş alanını sınıflandırmayı deneyin.
[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.11471312493085861Bazı nedenlerden dolayı, tanıma doğruluğu dokuz (9) sayısı için belirgin şekilde daha düşüktür. Sola yatık rakamlar daha doğru tanınmaktadır.
MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal kod: https://www.mql5.com/ru/code/47225
Envelopes beginner tutorial to learn how to code in MQL5
Horizontal Grid ControllerHorizontal Grid Controller with KeyEvents
Current Candle To Close in x Time
Candlestick Body, High Low and Wick RangeClick on candlestick to see its body range, high low range, upper wick range and lower wick range value.