2017-02-13 5 views
-2

私のJavaループから生成された製品の集計に問題があります。 javaループから製品を集計する

public class ArtificialNeuron { 

    public ArtificialNeuron(double[] weightings) { 
     weights = weightings; 
     inputs = new double[6]; 
     inputs[0] = 1; 
    } 

    public void setInput(int index, double newValue) { 
     inputs[index] = newValue; 
    } 

    public int activate(double threshold) { 
     double x = 0; 
     for(int i=0; i<inputs.length;i++) 
      x = inputs[i]*weights[i]; 
     double sum = x+x+x+x+x+x; 
     if(sum >= threshold) { 
      return 1; 
     } else { 
      return -1; 
     } 
    } 
} 

は、私はいくつかのJUnitテストを実行し、常にあればelse文で失敗するように見えます。私はおそらくそれを私の集計方法と信じていますが、私はどのように製品を集計するのか分かりません。

+0

最初にJava標準規格に従ってコードをフォーマットして、わかりやすく理解してください。私たちが簡単に理解できるなら、私たちはその質問を助け、答えることができます。 –

+1

本当にあなたの質問には直接ではありませんが、 'x + x + x + x + x + x'は' 6 * x; 'です。したがって、x = inputs [i] * weights [i];(最後のもの)を持つ1つの製品があります。 –

+0

チャールズ・バベッジ(Charles Babbage)の言葉によれば、「私は、このような疑問を引き起こす可能性のあるアイデアの混乱を正しく理解することはできません。 –

答えて

0

あなたのコードに基づいて、私はの製品を一緒に追加したいと思っています。代わりに、最後の製品に6を(効果的に)乗算しています。 xの一時的な理由が不明な場合は、sumのデフォルト値を0に設定して各商品を追加することができます。また、私はsum < thresholdのテストを少し読みやすくすると思います(同様に、常にはあなたのループに中カッコを使用しています。読みやすく、推論する方が簡単です)。同様に、

public int activate(double threshold) { 
    double sum = 0; 
    for (int i = 0; i < inputs.length; i++) { 
     sum += inputs[i] * weights[i]; // sum = sum + (inputs[i] * weights[i]) 
    } 
    if (sum < threshold) { 
     return -1; 
    } 
    return 1; 
} 
関連する問題