public void CanUseBigSigmoidLayer() { double[,] weights = new double[2000, 1000]; double[] input = new double[1000]; for (int i = 0; i < 1000; i++) { weights[i, i] = 1.0; input[i] = (double)i; } NetworkVector inputvector = new NetworkVector(input); Layer2 layer = Layer2.CreateLogisticLayer(new NetworkMatrix(weights)); layer.Run(inputvector); double[] result = layer.Output.ToArray(); double sig0 = logistic(0.0); for (int i = 0, j = 1000; i < 1000; i++, j++) { Assert.AreEqual(logistic((double)i), result[i], "Failed for i = " + i); Assert.AreEqual(sig0, result[j], "Failed for j = " + j); } }
public void CanMakeSigmoidLayer() { NetworkMatrix weights = new NetworkMatrix(new double[, ] { { 1, 2 }, { 3, 4 } }); Layer2 layer = Layer2.CreateLogisticLayer(weights); Assert.IsNotNull(layer); }
public void InputGradientRuns() { NetworkMatrix weights = new NetworkMatrix(new double[, ] { { 1 } }); NetworkVector outputgradient = new NetworkVector(new double[] { 1 }); Layer2 layer = Layer2.CreateLogisticLayer(weights); NetworkVector inputGradientCheck = new NetworkVector(new double[] { 0 }); Assert.AreEqual(inputGradientCheck, layer.InputGradient(outputgradient)); }
public void SigmoidLayerHasRightRun() { NetworkMatrix weights = new NetworkMatrix(new double[, ] { { 1, 0, 1 }, { 1, 1, 0 } }); NetworkVector inputvector = new NetworkVector(new double[] { 1, 2, 3 }); Layer2 layer = Layer2.CreateLogisticLayer(weights); layer.Run(inputvector); NetworkVector expectedResult = new NetworkVector(new double[] { logistic(4), logistic(3) }); Assert.AreEqual(expectedResult, layer.Output); }
public void InputGradientRunsTwoByThree() { NetworkMatrix weights = new NetworkMatrix(new double[, ] { { 1, 2, 3 }, { 2, 3, 4 } }); Layer2 layer = Layer2.CreateLogisticLayer(weights); NetworkVector layerinput = new NetworkVector(new double[] { 1, 0, -1 }); layer.Run(layerinput); NetworkVector outputgradient = new NetworkVector(new double[] { 1, 1 }); NetworkVector inputGradientCheck = new NetworkVector( new double[] { 0.31498075621051952, 0.52496792701753248, 0.7349550978245456 } ); Assert.AreEqual(inputGradientCheck, layer.InputGradient(outputgradient)); }