예제 #1
0
        public void FunctionTest()
        {
            Linear       dense  = new Linear(1);
            SparseLinear target = new SparseLinear(1);

            double[] sx = { 1, -0.555556, 2, +0.250000, 3, -0.864407, 4, -0.916667 };
            double[] sy = { 1, -0.666667, 2, -0.166667, 3, -0.864407, 4, -0.916667 };
            double[] sz = { 1, -0.944444, 3, -0.898305, 4, -0.916667 };

            double[] dx = { -0.555556, +0.250000, -0.864407, -0.916667 };
            double[] dy = { -0.666667, -0.166667, -0.864407, -0.916667 };
            double[] dz = { -0.944444, +0.000000, -0.898305, -0.916667 };

            double expected, actual;

            expected = dense.Function(dx, dy);
            actual   = target.Function(sx, sy);
            Assert.AreEqual(expected, actual, 1e-10);

            expected = dense.Function(dx, dz);
            actual   = target.Function(sx, sz);
            Assert.AreEqual(expected, actual, 1e-10);

            expected = dense.Function(dy, dz);
            actual   = target.Function(sy, sz);
            Assert.AreEqual(expected, actual, 1e-10);
        }
예제 #2
0
        public void FunctionTest2()
        {
            double constant = 0.1;

            Linear target = new Linear(constant);

            double[] x = { 2.0, 3.1, 4.0 };
            double[] y = { 2.0, 3.1, 4.0 };

            double expected = Matrix.InnerProduct(x, y) + constant;
            double actual;

            actual = target.Function(x, y);
            Assert.AreEqual(expected, actual);

            actual = target.Function(x, x);
            Assert.AreEqual(expected, actual);

            actual = target.Function(y, y);
            Assert.AreEqual(expected, actual);
        }
예제 #3
0
            public double Output()
            {
                double result = 0;

                for (int i = 0; i < Weights.Length; i++)
                {
                    result += Weights[i] * Inputs[i];
                }
                if (bias == MLP.Bias.biasOn)
                {
                    result += Bias;
                }
                if (ActivationFunction == 1)
                {
                    result = Sigm.Function(result);
                }
                if (ActivationFunction == 2)
                {
                    result = Linear.Function(result);
                }
                return(result);
            }
예제 #4
0
        public void FunctionTest()
        {
            IKernel linear = new Linear(1);

            double[] x = { 1, 1 };
            double[] y = { 1, 1 };

            double actual = linear.Function(x, y);

            double expected = 3;

            Assert.AreEqual(expected, actual);


            linear = new Linear(11.5);

            x = new double[] { 0.2, 5 };
            y = new double[] { 3, 0.7 };

            actual   = linear.Function(x, y);
            expected = 15.6;

            Assert.AreEqual(expected, actual);
        }
예제 #5
0
        public static void TestGenericArrayInterface()
        {
            var x = new Linear();
            var r = x.Function(null);

            Assert.AreEqual(123, r);

            var x1 = new Linear1();
            var r1 = x1.Function(new[] { 1.1 });

            Assert.AreEqual(1.1, r1);

            var x2 = new Linear2();
            var r2 = x2.Function(new double[, ] {
                { 1.1, 2.2, 3.3 }, { 4.1, 5.1, 6.1 }
            });

            Assert.AreEqual(5.1, r2);

            var x3 = new Linear3();
            var r3 = x3.Function(new List <double>(new[] { 1.1, 2.1 }));

            Assert.AreEqual(2.1, r3);
        }