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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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())); }
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))); }