Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Советники

Пример использования ONNX-модели для распознавания нарисованных цифр - эксперт для MetaTrader 5

Просмотров:
1765
Рейтинг:
(10)
Опубликован:
2023.11.15 14:13
Обновлен:
2023.11.16 02:41
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Эксперт, способный распознавать рукописные цифры

База данных MNIST состоит из 60,000 изображений для обучения и 10,000 изображений для тестирования. Эти изображения были созданы после переработки оригинального набора чёрно-белых образцов размером 20x20 пикселей от NIST, которые в свою очередь были получены из Бюро переписи населения США и дополнены тестовыми образцами, написанными студентами американских университетов. Образцы были нормализированы и приведены к серому полутоновому изображению размером 28x28 пикселей.

Обученная модель распознавания рукописных цифр mnist.onnx была скачана с гитхаба из зоопарка моделей (opset 8). Желающие могут скачать и попробовать другие модели, за исключением модели с opset 1, который уже не поддерживается свежим onnx runtime. Удивительным оказался тот факт, что выходной вектор не был обработан функцией активации Softmax, как это принято в моделях классификации. Но это не страшно, просто сделаем это сами

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);
  }


 Цифры рисуются в специальной сетке при помощи мыши с зажатой левой кнопкой. Для распознавания нарисованной цифры необходимо нажать кнопку CLASSIFY.




Если полученная вероятность распознанной цифры меньше 0.8, то в журнал выводится результатный вектор с вероятностями по каждому классу. Попробуйте, например, классифицировать пустое незаполненное поле ввода

[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
Почему-то хуже всех распознаются девятки. Цифры, нарисованные с левым наклоном, распознаются лучше.


Количественный анализ тейков и стопов Количественный анализ тейков и стопов

Советник анализирует вероятности достижения тейк-профита и стоп-лосса.

Dynamic RSI Dynamic RSI

Dynamic RSI индикатор.

Вторая производная как фильтр линейного тренда Вторая производная как фильтр линейного тренда

Вторая производная может сглаживать временные ряды, удалять циклические компоненты и выделять тренды.

Калькулятор риска для MT 5 Калькулятор риска для MT 5

Индикатор считает ваш риск в процентах, и выдает размер предельного лота, который допустим для вашего риска. Нужно лишь указать риск в процентах, и размер стопа в пипсах.