- 显示:
- 2016
- 等级:
- 已发布:
- 2014.02.24 12:50
- 已更新:
- 2016.11.22 07:33
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
CNetMLP 提供多层感知(MLP).
该类的功能是:输入矢量和网络结构是分离的,也就是输入矢量和网络结构描述是互不相连的。
输入矢量在合理范围内可以说任意大小。 输入数据应该是被标准化了的, 比如数据应该在-1 .. 1 或者 0 .. 1之内。 网络根据使用数据的类型采用多种激活模式: 双曲正切函数应该使用-1..1的数据范围, 而sigmoid函数则使用0..1 的数据范围。
网络具有直接传输信号的多层结构。网络结构被描述为一个一维数组,数组的值决定每层的神经元个数。 层和神经元的数目不受限制。网络甚至可以说由一个神经元构成。
每个神经元有多个输入,这取决于它在网络中的位置,而输出只有一个。如果你希望网络有N个输出响应, 最后一层应该有N个神经元。 学习算法是iRprop. 学习数据的输入和输出以矢量形式存放在一维数组中。学习过程受限于学习循环次数或者允许误差范围。
利用类的参数化构造器创建网络。
CNetMLP *net=new CNetMLP(
层的数目, 网络结构数组, 输入矢量大小, 激活方式类型: 0 - sigmoid函数, 1 - hyperbolic tangent双曲正切函数).
网络学习通过调用函数Learn(学习模式, 输入数据数组, 输出数据数组, 学习循环次数, 允许误差). 学习结果可以检查类变量 mse – 学习中的错误 以及 epoch – 完成的学习循环次数来完成。
Calculate函数(输入矢量数组, 网络输出数组) 用来获取网络响应输出。
函数Save(带有标志位FILE_WRITE 和 FILE_BIN flags打开文件句柄) 以及 函数Load (带有标志位FILE_READ 和 FILE_BIN flags打开文件句柄) 用来分别保存网络到一个文件以及从文件载入一个网络。只有学习错误和数组存到文件中。 加载网络之前必须遵守创建网络和存储网络的规范。
类的使用可参考附上的示例。类和示例文件必须放在相同文件夹。
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/596