请观看如何免费下载自动交易
请在Twitter上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
EA

使用ONNX模型识别手写数字的示例 - MetaTrader 5EA

显示:
719
等级:
(9)
已发布:
2023.11.27 08:51
mnist.onnx (25.83 KB)
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务

可识别手写数字的EA交易

MNIST数据库由60,000张用于练习的图像和10,000张用于测试的图像组成。这些图像通过"重新组合"一组原始NIST 20x20像素黑白样本来创建,这组样本从美国人口普查局获得,并补充从美国高中生中获取的测试样本。样本被标准化为28x28像素大小,并进行抗混叠处理,从而引入灰度级别。

测试的手写数字识别模型mnist.onnx从Model Zoo(opset 8)的Github下载。有兴趣的用户可以下载并试用其他模型,但不包括使用opset 1的模型,因为最新的ONNX运行环境已不再支持opset 1。出人意料的是,输出向量并没有像分类模型中常见的那样使用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);
  }


 按住鼠标左键,用鼠标在特殊网格中绘制数字。要识别绘制的数字,请按"分类"按键。




如果获得识别数字的概率小于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
出于某种原因,数字九(9)的识别准确率明显较低。识别向左倾斜的数字会更准确。


由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/47225

KYjiaoyi KYjiaoyi

以ama和rsi指标作为交易标准

检查是否有新柱产生 检查是否有新柱产生

作用是检查是否产生新柱 这是一个类文件,可作为类使用,也可以复制到EA或脚本中使用

交易者的MQL5编程(MQL5 Programming for Traders) - 源代码第一部分 交易者的MQL5编程(MQL5 Programming for Traders) - 源代码第一部分

本书第一章介绍了MQL5语言和开发环境。与MQL4(MetaTrader 4 语言)相比,MQL5语言其中一项新功能就是支持面向对象编程(OOP),这使其类似于C++。

交易者的MQL5编程(MQL5 Programming for Traders) - 源代码第二部分 交易者的MQL5编程(MQL5 Programming for Traders) - 源代码第二部分

第二部分 "MQL5编程基础知识"介绍了该编程语言的核心概念。本书这一部分专门讨论数据类型、标识符、变量、表达式和运算符。您将学习了解如何组合不同的指令来形成程序逻辑。