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

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

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

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

База данных 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

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