Exemplo n.º 1
0
        public void LogGradientCheck()
        {
            var x   = new PlaceHolder <T>("x");
            var fun = ConvNetSharp <T> .Instance.Log(x);

            var shape    = new Shape(2, 2, 3, 4);
            var location = NewVolume(RandomUtilities.RandomDoubleArray(shape.TotalLength, 20.0, 1.0, true), shape);

            GradientCheck(fun, location, 1e-2);
        }
Exemplo n.º 2
0
        public void TanhGradientCheck()
        {
            var x   = new PlaceHolder <T>("x");
            var fun = ConvNetSharp <T> .Instance.Tanh(x);

            var shape    = new Shape(2, 2, 3, 4);
            var location = NewVolume(RandomUtilities.RandomDoubleArray(shape.TotalLength), shape);

            GradientCheck(fun, location);
        }
Exemplo n.º 3
0
        public void DivideGradientCheck()
        {
            var shape    = new Shape(2, 2, 3, 4);
            var location = NewVolume(RandomUtilities.RandomDoubleArray(shape.TotalLength), shape);

            var x = new PlaceHolder <T>("x");
            var z = new Const <T>(NewVolume(new double[shape.TotalLength].Populate(1.0), shape), "z");

            GradientCheck(x / z, location, 1e-5);
            GradientCheck(z / x, location, 1e-5);
        }
Exemplo n.º 4
0
        public void SqrtGradientCheck()
        {
            var cns = new ConvNetSharp <T>();
            var x   = cns.PlaceHolder("x");
            var fun = cns.Sqrt(x);

            var shape    = new Shape(2, 2, 3, 4);
            var location = this.NewVolume(RandomUtilities.RandomDoubleArray(shape.TotalLength, posisitveOnly: true), shape);

            this.GradientCheck(cns, fun, location);
        }
Exemplo n.º 5
0
        public void TanhGradientCheck()
        {
            var cns = new ConvNetSharp <T>();
            var x   = cns.PlaceHolder("x");
            var fun = cns.Tanh(x);

            var shape    = new Shape(2, 2, 3, 4);
            var location = NewVolume(RandomUtilities.RandomDoubleArray(shape.TotalLength), shape);

            GradientCheck(cns, fun, location);
        }
Exemplo n.º 6
0
        public void LeakyReluGradientCheck()
        {
            var cns = new ConvNetSharp <T>();
            var x   = cns.PlaceHolder("x");
            var fun = cns.LeakyRelu(x, (T)Convert.ChangeType(0.01, typeof(T)));

            var shape    = new Shape(2, 2, 3, 4);
            var location = NewVolume(RandomUtilities.RandomDoubleArray(shape.TotalLength), shape);

            GradientCheck(cns, fun, location, 1e-5);
        }
Exemplo n.º 7
0
        public void SigmoidGradientCheck()
        {
            var cns = new ConvNetSharp <T>();
            var x   = cns.PlaceHolder("x");
            var fun = cns.Sigmoid(x);

            var shape    = new Shape(2, 2, 3, 4);
            var location = this.NewVolume(RandomUtilities.RandomDoubleArray(shape.TotalLength), shape);

            this.GradientCheck(cns, fun, location, 1e-3);
        }
Exemplo n.º 8
0
        public void SumGradientCheck()
        {
            var x   = new PlaceHolder <T>("x");
            var fun = ConvNetSharp <T> .Instance.Sum(x, new Shape(1, 1, 1, 4));

            var shape    = new Shape(2, 2, 3, 4);
            var location = NewVolume(RandomUtilities.RandomDoubleArray(shape.TotalLength), shape);

            var grad = NewVolume(new[] { 1.0, 1.0, 1.0, 1.0 }, new Shape(1, 1, 1, 4));

            GradientCheck(fun, location, 1e-4, grad);
        }
Exemplo n.º 9
0
        public void SubstractGradientCheck()
        {
            var shape    = new Shape(2, 2, 3, 4);
            var location = NewVolume(RandomUtilities.RandomDoubleArray(shape.TotalLength), shape);

            var cns = new ConvNetSharp <T>();
            var x   = cns.PlaceHolder("x");
            var z   = cns.Const(NewVolume(new double[shape.TotalLength].Populate(1.0), shape), "z");

            GradientCheck(cns, x - z, location);
            GradientCheck(cns, z - x, location);
        }
Exemplo n.º 10
0
        public void MatMultiplyGradientCheck()
        {
            var shape    = new Shape(2, 2, 1, 4);
            var location = NewVolume(RandomUtilities.RandomDoubleArray(shape.TotalLength), shape);

            var cns = new ConvNetSharp <T>();
            var x   = cns.PlaceHolder("x");
            var z   = cns.Const(NewVolume(new double[shape.TotalLength].Populate(1.0), shape), "z");

            GradientCheck(cns, cns.MatMult(x, z), location);
            GradientCheck(cns, cns.MatMult(z, x), location);
        }
Exemplo n.º 11
0
        public void PowerGradientCheck()
        {
            var cns      = new ConvNetSharp <T>();
            var shape    = new Shape(2, 2, 3, 4);
            var location = this.NewVolume(RandomUtilities.RandomDoubleArray(shape.TotalLength), shape);

            var x = cns.PlaceHolder("x");
            var z = cns.Const(this.NewVolume(new double[shape.TotalLength].Populate(2.0), shape), "z");

            this.GradientCheck(cns, x ^ z, location);
            this.GradientCheck(cns, z ^ x, location);
        }
Exemplo n.º 12
0
        public void ConcatGradientCheck()
        {
            var leftShape  = new Shape(2, 2, 1, 1);
            var rightShape = new Shape(3, 1, 1, 1);

            var cns      = new ConvNetSharp <T>();
            var location = NewVolume(RandomUtilities.RandomDoubleArray(leftShape.TotalLength), new Shape(2, 2, 1, 1));
            var x        = cns.PlaceHolder("x");
            var z        = cns.Const(NewVolume(new double[rightShape.TotalLength].Populate(1.0), rightShape), "z");
            var fun      = cns.Concat(x, z);

            GradientCheck(cns, fun, location, 1e-5);
        }
Exemplo n.º 13
0
        public void SumGradientCheck()
        {
            var cns = new ConvNetSharp <T>();
            var x   = cns.PlaceHolder("x");
            var fun = cns.Sum(x, new Shape(1, 1, 1, 4));

            var shape    = new Shape(2, 2, 3, 4);
            var location = this.NewVolume(RandomUtilities.RandomDoubleArray(shape.TotalLength), shape);

            var grad = this.NewVolume(new[] { 1.0, 1.0, 1.0, 1.0 }, new Shape(1, 1, 1, 4));

            this.GradientCheck(cns, fun, location, 1e-4, grad);
        }
        public void DropoutWith0Dropprob()
        {
            var volume   = NewVolume(RandomUtilities.RandomDoubleArray(100), new Shape(100));
            var result   = NewVolume(new double[100], new Shape(100));
            var dropprob = (T)Convert.ChangeType(0.0, typeof(T));

            // Forward
            volume.DoDropout(result, dropprob);
            Assert.IsTrue(volume.ToArray().SequenceEqual(result.ToArray()));

            // Backward
            var inputGradient = BuilderInstance <T> .Volume.SameAs(volume.Storage, volume.Shape);

            var outputActivationGradient = NewVolume(new double[100].Populate(1.0), new Shape(100));

            result.DoDropoutGradient(volume, outputActivationGradient, inputGradient, dropprob);

            Assert.IsTrue(inputGradient.ToArray().SequenceEqual(outputActivationGradient.ToArray()));
        }
Exemplo n.º 15
0
 public override Volume <double> Random(Shape shape, double mu = 0, double std = 1.0)
 {
     return(new Volume(new VolumeStorage(RandomUtilities.RandomDoubleArray(shape.TotalLength, mu, std), shape, this.Context)));
 }