文章 "从头开始采用 MQL 语言进行深度神经网络编程" - 页 2

 
Anddy Cabrera #:

嗨,李、

我已用 2 个演示文件更新了文章。一个用于 MQL5,一个用于 MQL4。DeepNeuralNetwork.mqh 可同时用于 mQL5 和 mQL4。


无论如何,我在此附上该文件,以演示如何使用它。


如果您有更多问题,请告诉我。

这篇文章写得非常好,我试用了演示版,发现只有 yValues[1] 的值可能超过 .5,yValues[0] 和 yValues[2] 的值最大为 .2 或 .3。
 
nail sertoglu #:

感谢您分享的代码。我试着理解您的方法。


关于 yValues[0] 、yValues[1]、yValues[2],我有些犹豫 ,因为它们并没有变化,而且总是 0 ,33333,但是_xValues[1,2,3]会随着新条形图的变化 变化; 因此,如果根据yValues 进行 交易,我看不到任何交易,而根据 _xValues 条件进行交易时,交易会发生

这是我的错,还是您原始代码中的编码错误?

更新下面的函数,使其返回 `bool` 而不是 `void`,您就会发现给出的权重数量不对。

bool SetWeights(double &weights[])
     {
      int numWeights=(numInput*numHiddenA)+numHiddenA+(numHiddenA*numHiddenB)+numHiddenB+(numHiddenB*numOutput)+numOutput;
      if(ArraySize(weights)!=numWeights)
        {
         printf("Bad weights length (%i), expected %i", ArraySize(weights), numWeights);
         return false;
        }

请注意,您还需要在文件顶部更新权重(仅在初始化网络时更新权重是不够的 :P

#define  SIZEI 25 // 输入 * 隐藏 A
#define  SIZEA 25 // 隐藏的 A * 隐藏的 B
#define  SIZEB 15 // 隐藏的 B * 输出
 
嗨,安迪、

这是一篇非常好的文章。
我有几个问题
1) 在多层神经元中,我能否同时使用 Sigmoid 和 Tan-h 激活引线组合输出?
2) 您是否需要按照 Karlis Balcers 的建议更新文件顶部的 wheights?
#define  SIZEI 20 // (输入 * 隐藏 A)+ 隐藏 A
#define  SIZEA 25 // (隐藏 A * 隐藏 B)+ 隐藏 B
#define  SIZEB 18 //(隐藏 B * 输出)+ 输出
注意:SIZEI 应该是 20,SIZEB 应该是 18,对吗?
3) 我附上了这篇文章中描述的深度神经网络图,是否正确?

非常感谢


EADNN

 
它的工作原理与带有优化器的遗传算法类似,选择的值会使最终结果更好
 
<删除
 

动画不错。

两层神经网络是 "浅层 "神经网络,而不是深层神经网络。深度神经网络包括具有三个以上隐藏层的网络。由于训练这种神经网络的特殊性,人们开发了深度学习方法。

这篇文章作为在 MCL 上编程的范例,可能会有所帮助。熟悉 MLP 的主题 - 当然是必要的。作为神经网络应用 的范例--并不完整,远远落后于该主题的现状。

通常情况下,如果不对超参数进行优化,神经网络就无法提供令人满意的质量。

我只是不明白,既然有大量关于这一主题的现成程序,为什么还要用即兴手段来制造一辆自行车呢?

 
对 NS 的理解是美好而清晰的。
 

更正。文章中有 "深网 "的定义。我没看到。

利用遗传学优化神经网络权重的过程并不是字面上的 "学习"。它毕竟是优化。训练使用的是完全不同的方法。虽然神经网络的这种变体也在使用,而且相当成功。

要了解神经网络的工作原理,就必须了解神经网络是 如何通过误差反向传播进行训练的。好吧,我已经在挑你的毛病了:)

祝你好运

 
非常感谢作者的文章。作为一个远离神经网络的人,这篇文章对我深入了解事情的本质帮助很大,而且从进一步熟悉这个主题的角度来看,这篇文章非常有趣。再次感谢!
 

有没有办法将误差反向传播纳入这个网络?

出于某种原因,有一种观点认为这样的网络会更加灵活,并能提供更好的输入 - outputs....

带有误差反向传播的网络并不是一个完全不同的网络,对吗?