public void testBiasUpdateMatrixesFormedCorrectly()
{
Matrix weightMatrix1 = new Matrix(2, 1);
weightMatrix1.set(0, 0, -0.27);
weightMatrix1.set(1, 0, -0.41);
Vector biasVector1 = new Vector(2);
biasVector1.setValue(0, -0.48);
biasVector1.setValue(1, -0.13);
Layer layer1 = new Layer(weightMatrix1, biasVector1,
new LogSigActivationFunction());
LayerSensitivity layer1Sensitivity = new LayerSensitivity(layer1);
Vector inputVector1 = new Vector(1);
inputVector1.setValue(0, 1);
layer1.feedForward(inputVector1);
Matrix weightMatrix2 = new Matrix(1, 2);
weightMatrix2.set(0, 0, 0.09);
weightMatrix2.set(0, 1, -0.17);
Vector biasVector2 = new Vector(1);
biasVector2.setValue(0, 0.48);
Layer layer2 = new Layer(weightMatrix2, biasVector2,
new PureLinearActivationFunction());
LayerSensitivity layer2Sensitivity = new LayerSensitivity(layer2);
Vector inputVector2 = layer1.getLastActivationValues();
layer2.feedForward(inputVector2);
Vector errorVector = new Vector(1);
errorVector.setValue(0, 1.261);
layer2Sensitivity.sensitivityMatrixFromErrorMatrix(errorVector);
layer1Sensitivity
.sensitivityMatrixFromSucceedingLayer(layer2Sensitivity);
Vector biasUpdateVector2 = BackPropLearning.calculateBiasUpdates(
layer2Sensitivity, 0.1);
Assert.AreEqual(0.2522, biasUpdateVector2.getValue(0), 0.001);
Vector lastBiasUpdateVector2 = layer2.getLastBiasUpdateVector();
Assert.AreEqual(0.2522, lastBiasUpdateVector2.getValue(0), 0.001);
Vector penultimateBiasUpdateVector2 = layer2
.getPenultimateBiasUpdateVector();
Assert.AreEqual(0.0, penultimateBiasUpdateVector2.getValue(0),
0.001);
Vector biasUpdateVector1 = BackPropLearning.calculateBiasUpdates(
layer1Sensitivity, 0.1);
Assert.AreEqual(0.00495, biasUpdateVector1.getValue(0), 0.001);
Assert.AreEqual(-0.00997, biasUpdateVector1.getValue(1), 0.001);
Vector lastBiasUpdateVector1 = layer1.getLastBiasUpdateVector();
Assert.AreEqual(0.00495, lastBiasUpdateVector1.getValue(0), 0.001);
Assert.AreEqual(-0.00997, lastBiasUpdateVector1.getValue(1), 0.001);
Vector penultimateBiasUpdateVector1 = layer1
.getPenultimateBiasUpdateVector();
Assert.AreEqual(0.0, penultimateBiasUpdateVector1.getValue(0),
0.001);
Assert.AreEqual(0.0, penultimateBiasUpdateVector1.getValue(1),
0.001);
}