The learning mechanism without this property is never complete. This is because of the complexity of the neural network system that tries to learn arbitrary data-sets. The learning rate and the momentum should be dynamically adjusted as the iteration process happens. This is to monitor the entire system and capture the instant with the required gradient. Of course, the gradient can never be made zero, but we may choose at which instant the system should stop going any further.
There must also be a mechanism that monitors the change in error values. This requires an extra computation of evaluating the error again. Hence, to avoid this, the methods trainNetwork and trainNetworkDepth should be modified to return the current error value.