1. A method of training a neural network having an input layer, a middle layer and an output layer, comprising the steps of: (a) presenting an input vector having a plurality of training features to the neural network; (b) computing distances between a plurality of said training features and a plurality of prototype weight values; (c) generating, for each prototype weight value, a count value corresponding to a number of occurrences of an input vector that falls within a region of influence of a particular prototype; (d) repeating steps (a)-(c) until the neural network provides an indication of a last training epoch; and (e) in response to the indication of the last training epoch, storing, in a memory, the count value for each of the prototype weight values.