I = np.eye(d) inhibit = 1 - I B = 1. / tau_model A = (-k * I - beta * inhibit) / tau_model
with nengo.Network(label="LCA") as net: net.input = nengo.Node(size_in=d) # array of ensembles: d ensembles, each with n_neurons neurons x = nengo.networks.EnsembleArray( n_neurons, d, eval_points=nengo.dists.Uniform(0., 1.), intercepts=nengo.dists.Uniform(0., 1.), encoders=nengo.dists.Choice([[1.]]), label="state") # transform: linear transformation mapping the pre output to the post input # synapse: synapse model for filtering nengo.Connection(x.output, x.input, transform=tau_actual * A + I, synapse=tau_actual) nengo.Connection(net.input, x.input, transform=tau_actual*B, synapse=tau_actual) net.output = x.output return net
defmain(): dt = 0.001 with nengo.Network(seed=42) as model: # winner takes all wta = LCA(3, 200, dt) stimulus = nengo.Node([0.8, 0.7, 0.6]) nengo.Connection(stimulus, wta.input, synapse=True)
p_stimulus = nengo.Probe(stimulus, synapse=None) p_output = nengo.Probe(wta.output, synapse=0.01) with nengo.Simulator(model, dt=dt) as sim: sim.run(1.)