public void ComputeTwiceGradientShouldYieldTheSameResult() { const int inputWidth = 20; const int inputHeight = 20; const int inputDepth = 2; var layer = new ReluLayer(); layer.Init(inputWidth, inputHeight, inputDepth); // Forward pass var input = BuilderInstance.Volume.Random(new Shape(inputWidth, inputHeight, inputDepth)); var output = layer.DoForward(input, true); // Set output gradients to 1 var outputGradient = BuilderInstance.Volume.SameAs(new double[output.Shape.TotalLength].Populate(1.0), output.Shape); // Backward pass to retrieve gradients layer.Backward(outputGradient); var step1 = ((Volume.Double.Volume)layer.InputActivationGradients.Clone()).ToArray(); layer.Backward(outputGradient); var step2 = ((Volume.Double.Volume)layer.InputActivationGradients.Clone()).ToArray(); Assert.IsTrue(step1.SequenceEqual(step2)); }
public void SerializationTest() { // Create a ReluLayer var layer = new ReluLayer(); layer.Init(10, 10, 3); using (var ms = new MemoryStream()) { // Serialize IFormatter formatter = new BinaryFormatter(); formatter.Serialize(ms, layer); // Deserialize ms.Position = 0; var result = formatter.Deserialize(ms) as ReluLayer; Assert.AreEqual(layer.InputDepth, result.InputDepth); Assert.AreEqual(layer.InputHeight, result.InputHeight); Assert.AreEqual(layer.InputWidth, result.InputWidth); Assert.AreEqual(layer.OutputDepth, result.OutputDepth); Assert.AreEqual(layer.OutputHeight, result.OutputHeight); Assert.AreEqual(layer.OutputWidth, result.OutputWidth); } }
public void Instantiation() { const int inputWidth = 20; const int inputHeight = 20; const int inputDepth = 2; var layer = new ReluLayer(); layer.Init(inputWidth, inputHeight, inputDepth); Assert.AreEqual(20, layer.OutputWidth); Assert.AreEqual(20, layer.OutputHeight); Assert.AreEqual(2, layer.OutputDepth); }
public void ReluLayerSerialization() { var layer = new ReluLayer(); layer.Init(28, 24, 1); var data = layer.GetData(); Assert.AreEqual(28, data["InputWidth"]); Assert.AreEqual(24, data["InputHeight"]); Assert.AreEqual(1, data["InputDepth"]); var deserialized = LayerBase <double> .FromData(data) as ReluLayer; Assert.IsNotNull(deserialized); Assert.AreEqual(28, deserialized.InputWidth); Assert.AreEqual(24, deserialized.InputHeight); Assert.AreEqual(1, deserialized.InputDepth); Assert.AreEqual(layer.OutputWidth, deserialized.OutputWidth); Assert.AreEqual(layer.OutputHeight, deserialized.OutputHeight); Assert.AreEqual(layer.OutputDepth, deserialized.OutputDepth); }