}
public Vector calculateBiasUpdates(LayerSensitivity layerSensitivity,
double alpha, double momentum) {
Layer layer = layerSensitivity.getLayer();
Matrix biasUpdateMatrixWithoutMomentum = layerSensitivity
.getSensitivityMatrix().times(alpha).times(-1.0);
Matrix biasUpdateMatrixWithMomentum = layer.getLastBiasUpdateVector()
.times(momentum)
.plus(biasUpdateMatrixWithoutMomentum.times(1.0 - momentum));
Vector result = new Vector(
biasUpdateMatrixWithMomentum.getRowDimension());
for (int i = 0; i < biasUpdateMatrixWithMomentum.getRowDimension(); i++) {
result.setValue(i, biasUpdateMatrixWithMomentum.get(i, 0));
}
layer.acceptNewBiasUpdate(result.copyVector());
return result;
}