public Vector feedForward(Vector inputVector) {
lastInput = inputVector;
Matrix inducedField = weightMatrix.times(inputVector).plus(biasVector);
Vector inducedFieldVector = new Vector(numberOfNeurons());
for (int i = 0; i < numberOfNeurons(); i++) {
inducedFieldVector.setValue(i, inducedField.get(i, 0));
}
lastInducedField = inducedFieldVector.copyVector();
Vector resultVector = new Vector(numberOfNeurons());
for (int i = 0; i < numberOfNeurons(); i++) {
resultVector.setValue(i, activationFunction
.activation(inducedFieldVector.getValue(i)));
}
// set the result as the last activation value
lastActivationValues = resultVector.copyVector();
return resultVector;
}