1. A computer-implemented method of training a neural network comprising: using a processor and a non-transitory computer readable memory coupled thereto to implement a neural network comprising a plurality of interconnected neurons each having at least one input and at least one synaptic weight value and being arranged in a data structure defining an area; using the processor to perform synaptogenic trimming on the at least one input of said plurality of interconnected neurons in said area using a synaptogenic factor for each neuron based on standard deviation of a measured match between the input and synaptic weight value; using the processor to conduct a top-k competition among all neurons in said area to select a subset of said neurons as winning neurons; using the processor to apply neuronal learning only to said winning neurons to update the synaptic weight values for said winning neurons; and using the processor to update the synaptogenic factor for each winning neuron.