一个快速和免费的MT4资料库,让神经网络人非常高兴。 - 页 9

 
这是一个由16个网格组成的委员会,你可以看一下所创建的文件。
 
Henry_White >> :

如果我们有一个有一个输出神经元的网格,我们如何得到16个输出......!?还是16个网的委员会?

它是。

 

大家好!

我已经在这段代码上工作了两个晚上了。

void ann_prepare_input () {
    int i;
    double res = 0;
	 for( i = 0; i < AnnInputs; i++) {
      res = (iRSI(Symbol(), 0, 30, PRICE_OPEN, i) - 50.0) / 50.0; 
      if (MathAbs( res) > 1) {
         if ( res > 0) {
            InputVector[ i] = 1.0;            
         } else {
            InputVector[ i] = -1.0;            
         }
      } else {
         InputVector[ i] = res;            
      }
    }
}

我不明白这有什么意义?

if (MathAbs( res) > 1) {
         if ( res > 0) {
            InputVector[ i] = 1.0;            
         } else {
            InputVector[ i] = -1.0;            
         }
      } else {
         InputVector[ i] = res;            
      }

如果res值不能大于1。

请解释这一点,当然,如果这不是一个秘密的话。

 
alex_r >> :

大家好!

我整晚都坐在那里,在一段代码中摸索。

我不明白这有什么意义?

如果res值不能大于1。

如果这不是一个秘密,请解释这一点。

归一化的值(1;-1)应被送入NS的输入。否则,NS训练可能会导致不确定的结果。

 

那么,res是如何计算的呢?

条件

(MathAbs(res) > 1)
将永远不会被满足,输入将是
res = (iRSI(Symbol(), 0, 30, PRICE_OPEN, i) - 50.0) / 50.0
而在这里,在99.99%的情况下,除了1和-1,你自然会得到任何东西。
如果是这样
for( i = 0; i < AnnInputs; i++) {
      res = (iRSI(Symbol(), 0, 30, PRICE_OPEN, i) - 50.0) / 50.0; 

         if ( res > 0) {                 
            InputVector[ i] = 1.0;            
         } else {
            InputVector[ i] = -1.0;            
         }        

    }

那么只有1和-1

还是我错了?

 
alex_r >> :

>>还是我错了?

错了。这里的一切工作都很正常。你应该更仔细地研究这些代码。这是非常简单和明显的。我不明白你的"//"的意义--它完全 "杀死 "了意义。

iRSI基本上给出了从0到100的数值,在这个范围之外有很少的异常值(这就是为什么它是(MathAbs(res)>1)),所以res在99.9%的情况下会位于1和-1之间,而InputVector会位于100%之内。

如果你在等待每个操作员的细目,我想这里没有人有能力给予编程课程。而对于这一部分,它将是非主题的。也许你应该在论坛的另一个版块申请,或者给我写信。

PS。不要对别人的代码进行 "评论"(最好进行评论)。这可能会误导他人,而且只是一种不好的语气,我认为。如果你不同意作者的观点--写出你的变体。

 

删除了注释。

现在我解释一下,在res>0时,这里的0对应于RSI指标的50级,我们赋值1,否则我们赋值-1。

什么是不清楚的?最低限度的代码,其他什么都没有。

正如源代码中写的那样,数据规范化的主要条件没有得到满足。

唯一要做的是过滤另一个零,但在这种情况下,它并不那么重要。

 
你的变体将给出-1或1。 而这一切是为了什么?你打算如何用这个来训练一个网络呢?或者说,为什么?这种国家的 "二元性 "有什么用?你如何从中建立一个模式来训练网络
 
Henry_White >> :

归一化的数值(1;-1)必须输入到NS输入。否则,训练NS可能导致不确定的结果。

也许你被这个帖子所迷惑。这里我指的是范围,而不是二进制状态。

 
alex_r >> :

正如源代码中写的那样,数据规范化的主要条件没有得到满足。

你错了,因为网格输入(第1层)是sigmoids,设置为范围:-1;1。因此,在-1到1范围内的任何输入值都是正常化的必要和充分条件。


你试图构建的是用一个自定义的函数Signum(input)代替sigmoid函数,这就低估了输入数据的离散性,造成了训练集包含大量相互矛盾的数据的情况。

原因: