Ticaret robotlarını ücretsiz olarak nasıl indirebileceğinizi izleyin
Bizi Telegram üzerinde bulun!
Fan sayfamıza katılın
Komut dosyasını ilginç mi buldunuz?
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
Komut dosyasını beğendiniz mi? MetaTrader 5 terminalinde deneyin
Uzman Danışmanlar

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:
(9)
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.11471312493085861
Bazı 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 By William210 Envelopes beginner tutorial By William210

Envelopes beginner tutorial to learn how to code in MQL5

Horizontal Grid Controller Horizontal Grid Controller

Horizontal Grid Controller with KeyEvents

Candle Time Count Down Candle Time Count Down

Current Candle To Close in x Time

Candlestick Body, High Low and Wick Range Candlestick Body, High Low and Wick Range

Click on candlestick to see its body range, high low range, upper wick range and lower wick range value.