コード例 #1
0
        public override double Compute(Indexer inputs, Indexer weights)
        {
            var prevIndex = -1;
            var nextIndex = -1;

            for (int i = 0; i < Table.Count; i++)
            {
                if (Table[i].Item1 < inputs[0])
                {
                    prevIndex = i;
                }
                else
                {
                    nextIndex = i;
                    break;
                }
            }
            if (prevIndex == -1)
            {
                prevIndex = nextIndex;
                nextIndex++;
            }
            if (nextIndex == -1)
            {
                nextIndex = prevIndex;
                prevIndex--;
            }

            var prev = Table[prevIndex];
            var next = Table[nextIndex];

            var k = (next.Item2 - prev.Item2) / (next.Item1 - prev.Item1);
            var b = prev.Item2 - k * prev.Item1;

            return(k * inputs[0] + b);
        }
コード例 #2
0
 public abstract void Derivative(double error, Indexer inputs, Indexer weights, Indexer inputsDerivative, Indexer weightsDerivative);
コード例 #3
0
 public abstract double Compute(Indexer inputs, Indexer weights);
コード例 #4
0
ファイル: SumNode.cs プロジェクト: okulovsky/DataScience
 public override void Derivative(double error, Indexer inputs, Indexer weights, Indexer inputsDerivative, Indexer weightsDerivative)
 {
     for (int i = 0; i < InputsCount; i++)
     {
         inputsDerivative[i] += error;
     }
 }
コード例 #5
0
ファイル: SumNode.cs プロジェクト: okulovsky/DataScience
 public override double Compute(Indexer inputs, Indexer weights)
 {
     return(inputs.Sum());
 }
コード例 #6
0
 public override void Derivative(double error, Indexer inputs, Indexer weights, Indexer inputsDerivative, Indexer weightsDerivative)
 {
     if (!IsFixed)
     {
         weightsDerivative[0] += error * LearningQ;
     }
 }
コード例 #7
0
 public override double Compute(Indexer inputs, Indexer weights)
 {
     return(weights[0]);
 }
コード例 #8
0
 public override void Derivative(double error, Indexer inputs, Indexer weights, Indexer inputsDerivative, Indexer weightsDerivative)
 {
     throw new NotImplementedException();
 }
コード例 #9
0
ファイル: Normalizator.cs プロジェクト: okulovsky/DataScience
 public override double Compute(Indexer inputs, Indexer weights)
 {
     return(ShiftAfterMultuplication + Multiplier * (ShiftBeforeMultiplication + inputs[0]));
 }
コード例 #10
0
ファイル: Neuron.cs プロジェクト: okulovsky/DataScience
        public override void Derivative(double error, Indexer inputs, Indexer weights, Indexer inputsDerivative, Indexer weightsDerivative)
        {
            var sum = weights[inputsCount];

            for (int i = 0; i < inputsCount; i++)
            {
                sum += inputs[i] * weights[i];
            }

            var d = Function.Derivative(sum);

            if (double.IsNaN(d))
            {
                throw new Exception();
            }
            weightsDerivative[inputsCount] += error * d;
            for (int i = 0; i < inputsCount; i++)
            {
                weightsDerivative[i] += error * d * inputs[i];
                inputsDerivative[i]  += error * d * weights[i];
            }
        }
コード例 #11
0
 public override void Derivative(double error, Indexer inputs, Indexer weights, Indexer inputsDerivative, Indexer weightsDerivative)
 {
 }
コード例 #12
0
 public override void Derivative(double error, Indexer inputs, Indexer weights, Indexer inputsDerivative, Indexer weightsDerivative)
 {
     if (!DisableLearing)
     {
         inputsDerivative[0] += error;
     }
 }
コード例 #13
0
 public override double Compute(Indexer inputs, Indexer weights)
 {
     return(LastComputedValue = inputs[0]);
 }
コード例 #14
0
ファイル: ProductNode.cs プロジェクト: okulovsky/DataScience
 public override double Compute(Indexer inputs, Indexer weights)
 {
     return(inputs.Aggregate((a, b) => a * b));
 }
コード例 #15
0
ファイル: Normalizator.cs プロジェクト: okulovsky/DataScience
 public override void Derivative(double error, Indexer inputs, Indexer weights, Indexer inputsDerivative, Indexer weightsDerivative)
 {
     inputsDerivative[0] += error / Multiplier;
 }
コード例 #16
0
ファイル: ProductNode.cs プロジェクト: okulovsky/DataScience
 public override void Derivative(double error, Indexer inputs, Indexer weights, Indexer inputsDerivative, Indexer weightsDerivative)
 {
     for (int i = 0; i < inputsCount; i++)
     {
         double product = 1;
         for (int j = 0; j < InputsCount; j++)
         {
             if (j == i)
             {
                 continue;
             }
             else
             {
                 product *= inputs[j];
             }
         }
         inputsDerivative[i] += error * product;
     }
 }
コード例 #17
0
 public override double Compute(Indexer inputs, Indexer weights)
 {
     throw new NotImplementedException();
 }