In [1]:
%matplotlib inline
import pylab
import numpy as np
import functools
import adapt_float
import adapt_spike
import adapt_fixed
In [2]:
models = {'float': adapt_float.AdaptiveFloat,
'spike_rng': functools.partial(adapt_spike.AdaptiveSpike, has_neuron_state=False, smoothing=10),
'spike_acc': functools.partial(adapt_spike.AdaptiveSpike, has_neuron_state=True, smoothing=10),
'fixed_rng': functools.partial(adapt_fixed.AdaptiveFixed, has_neuron_state=False, smoothing=10),
'fixed_acc': functools.partial(adapt_fixed.AdaptiveFixed, has_neuron_state=True, smoothing=10),
}
In [5]:
n_inputs = 1
n_outputs = 1
n_neurons = 256
seed = 1
stim = lambda i: [np.sin(i*2*np.pi/1000)]
for name, model in sorted(models.items()):
print(name)
adapt = model(n_inputs=n_inputs, n_outputs=n_outputs, n_neurons=n_neurons, seed=seed)
inputs = []
outputs = []
errors = []
error = np.zeros(1)
for i in range(2000):
input = np.array(stim(i))*adapt.input_max
output = adapt.step(input, error)
error[:] = output - input
inputs.append(input)
outputs.append(output)
errors.append(output-input)
pylab.figure()
pylab.title(name)
pylab.plot(inputs, label='input')
pylab.plot(outputs, label='output')
pylab.plot(errors, label='error')
pylab.legend(loc='best')
pylab.show()
In [ ]:
In [ ]: