Added
gain
and bias
along with either of
max_rates
or intercepts
, as the latter two parameters are ignored.
(#1431,
#1433)Changed
learning_rate
always comes first.
(#1095)pre_synapse
, post_synapse
, and theta_synapse
instead of pre_tau
, post_tau
, and theta_tau
respectively.
This allows arbitrary Synapse
objects to be used as filters on
learning signals.
(#1095)Deprecated
nengo.ipynb
IPython extension and the IPython2ProgressBar
have been deprecated and replaced by the IPython5ProgressBar
.
This progress bar will be automatically activated in IPython and
Jupyter notebooks from IPython version 5.0 onwards.
(#1087,
#1375)pre_tau
, post_tau
, and theta_tau
parameters
for learning rules are deprecated. Instead, use pre_synapse
,
post_synapse
, and theta_synapse
respectively.
(#1095)Removed
Added
amplitude
parameter to LIF
, LIFRate
,
and RectifiedLinear
which scale the output amplitude.
(#1325,
#1391)SpikingRectifiedLinear
neuron model.
(#1391)Changed
Ensemble.n_neurons
or Ensemble.dimensions
.
(#1372)Fixed
Model
instances.
(#1135)nengo.Node
functions.
(#1317)(*args, **kwargs)
could not be used in custom solvers.
(#1358,
#1359)Simulator.n_steps
and Simulator.time
properties
now return scalars, as was stated in the documentation.
(#1406)--seed-offset
option of the test suite.
(#1409)Added
NoSolver
solver that can be used to manually pass in
a predefined set of decoders or weights to a connection.
(#1352)Piecewise
process, which replaces the now deprecated
piecewise
function.
(#1036,
#1100,
#1355,
#1362)Changed
Fixed
ObjView
when using a weight solver.
(#1317)ShapeParam
would always store None
.
(#1342)Deprecated
piecewise
function in nengo.utils.functions
has been deprecated.
Please use the Piecewise
process instead.
(#1100)Added
n_neurons
property to Network
, which gives the
number of neurons in the network, including all subnetworks.
(#435,
#1186)UniformHypersphere
.
(#799)LinearFilter.combine
method to
combine two LinearFilter
instances.
(#1312)max_rates
and intercepts
given gain
and bias
.
(#1334)Changed
size_in
parameter and attribute,
allowing both integers and strings to define the dimensionality
of the learning rule. This replaces the error_type
attribute.
(#1307,
#1310)EnsembleArray.n_neurons
now gives the total number of neurons
in all ensembles, including those in subnetworks.
To get the number of neurons in each ensemble,
use EnsembleArray.n_neurons_per_ensemble
.
(#1186)Connection
function returns None
is now more clear.
(#1319)Connection
transform is set to None
.
(#1326)Fixed
Added
optimize=False
to Simulator
.
(#1035)Ensemble.normalize_encoders
to False
.
(#1191,
#1267)Samples
distribution to allow raw NumPy arrays
to be passed in situations where a distribution is required.
(#1233)Changed
Node
or Direct
ensemble
produces a non-finite value.
(#1178,
#1280,
#1286)label
of a network must be a string or None
,
and that the seed
of a network must be an int or None
.
This helps avoid situations where the seed would mistakenly
be passed as the label.
(#1277,
#1275)ens_kwargs
argument of
EnsembleArray
. Arrays are wrapped in a Samples
distribution internally.
(#691,
#766,
#1233)tau_ref
) for the Sigmoid
neuron type
has changed to 2.5 ms (from 2 ms) for better compatibility with the
default maximum firing rates of 200-400 Hz.
(#1248)Product
and CircularConvolution
networks have been
renamed from A
and B
to input_a
and input_b
for consistency.
The old names are still available, but should be considered deprecated.
(#887,
#1296)Fixed
Deprecated
net
argument to networks has been deprecated. This argument existed
so that network components could be added to an existing network instead of
constructing a new network. However, this feature is rarely used,
and makes the code more complicated for complex networks.
(#1296)Added
nengo.utils.network.activate_direct_mode
function to make it
easier to activate direct mode in networks where some parts require neurons.
(#1111,
#1168)Fixed
Changed
IndexError
now to be consistent with standard Python behaviour.
(#1176,
#1183)Added
scaled_encoders
on ensembles.
(#1167,
#1117)copy
method to Nengo objects. Nengo objects can now be pickled.
(#977,
#984)nengo.dists.get_samples
function for convenience
when working with distributions or samples.
(#1181,
docs)Changed
nengo.Simulator.data
is now cached,
making repeated access much faster.
(#1076,
#1175)Deprecated
nengo.Simulator.model
is deprecated. To access static data
generated during the build use nengo.Simulator.data
. It provides access
to everything that nengo.Simulator.model.params
used to provide access to
and is the canonical way to access this data across different backends.
(#1145,
#1173)API changes
function
argument
of nengo.Connection
. The values in the array are taken to be the
targets in the decoder solving process, which means that the eval_points
must also be set on the connection.
(#1010)nengo.utils.connection.target_function
is now deprecated, and will
be removed in Nengo 3.0. Instead, pass the targets directly to the
connection through the function
argument.
(#1010)Behavioural changes
Improvements
nengo.backends
entry point to make the reference simulator
discoverable for other Python packages. In the future all backends should
declare an entry point accordingly.
(#1127)ShapeParam
to store array shapes.
(#1045)ThresholdingPreset
to configure ensembles for thresholding.
(#1058,
#1077,
#1148)rasterplot
so that spikes from different neurons don’t overlap.
(#1121)Documentation
Bug fixes
filt
and filtfilt
now support lists as input.
(#1123)Bug fixes
Improvements
LIF
neuron model to spike at the same rate as the
LIFRate
neuron model for constant inputs. The older model has been
moved to nengo_extras
under the name FastLIF
.
(#975)y0
attribute to WhiteSignal
, which adjusts the phase of each
dimension to begin with absolute value closest to y0
.
(#1064)AssociativeMemory
to accept Semantic Pointer expressions as
input_keys
and output_keys
.
(#982)Bug fixes
__del__
method for cleanup. This should solve problems with the
cache’s file lock not being removed. It might be necessary to
manually remove the index.lock
file in the cache directory after
upgrading from an older Nengo version.
(#1053,
#1041,
#1048)Nnls
solver now works for weights. The NnlsL2
solver is
improved since we clip values to be non-negative before forming
the Gram system.
(#1027,
#1019)a=b, b=a
in basal ganglia SPA actions.
(#1098,
#1099)ipynb
extensions.
(#1088,
#1085)API changes
Process
has been added. Node
objects are now process-aware, meaning that
a process can be used as a node’s output
. Unlike non-process
callables, processes are properly reset when a simulator is reset.
See the processes.ipynb
example notebook, or the API documentation
for more details.
(#590,
#652,
#945,
#955)LIF
neuron models now accept an additional argument,
min_voltage
. Voltages are clipped such that they do not drop below
this value (previously, this was fixed at 0).
(#666)PES
learning rule no longer accepts a connection as an argument.
Instead, error information is transmitted by making a connection to the
learning rule object (e.g.,
nengo.Connection(error_ensemble, connection.learning_rule)
.
(#344,
#642)modulatory
attribute has been removed from nengo.Connection
.
This was only used for learning rules to this point, and has been removed
in favor of connecting directly to the learning rule.
(#642)nengo.Probe(conn, 'weights')
,
and these are always the weights that will change with learning
regardless of the type of connection. Previously, either decoders
or
transform
may have changed depending on the type of connection;
it is now no longer possible to probe decoders
or transform
.
(#729)nengo.networks
. The AssociativeMemory SPA module
also has an updated argument list.
(#702)Product
and InputGatedMemory
networks no longer accept a
config
argument. (#814)EnsembleArray
network’s neuron_nodes
argument is deprecated.
Instead, call the new add_neuron_input
or add_neuron_output
methods.
(#868)nengo.log
utility function now takes a string level
parameter
to specify any logging level, instead of the old binary debug
parameter.
Cache messages are logged at DEBUG instead of INFO level.
(#883)nengo.networks.assoc_mem.AssociativeMemory
and modifying
the defaults of others.
(#797)close
method to Simulator
. Simulator
can now be used
used as a context manager.
(#857,
#739,
#859)nengo.exceptions
module.
(#781)Connection
, Ensemble
, Node
, and Probe
)
now accept a label
and seed
argument if they didn’t previously.
(#958)nengo.synapses
, filt
and filtfilt
are deprecated. Every
synapse type now has filt
and filtfilt
methods that filter
using the synapse.
(#945)Connection
objects can now accept a Distribution
for the transform
argument; the transform matrix will be sampled from that distribution
when the model is built.
(#979).Behavioural changes
PES
learning rule’s error has been flipped to conform
with most learning rules, in which error is minimized. The error should be
actual - target
. (#642)PES
rule’s learning rate is invariant to the number of neurons
in the presynaptic population. The effective speed of learning should now
be unaffected by changes in the size of the presynaptic population.
Existing learning networks may need to be updated; to achieve identical
behavior, scale the learning rate by pre.n_neurons / 100
.
(#643)probeable
attribute of all Nengo objects is now implemented
as a property, rather than a configurable parameter.
(#671)x
as a copied NumPy array (instead of a readonly
view).
(#716,
#722)spa.Cortical
, and gate ensembles and connections in
spa.Thalamus
are now stored in the target modules.
(#894,
#906)filt
and filtfilt
functions on Synapse
now use the initial
value of the input signal to initialize the filter output by default. This
provides more accurate filtering at the beginning of the signal, for signals
that do not start at zero.
(#945)Improvements
Ensemble.noise
attribute, which injects noise directly into
neurons according to a stochastic Process
.
(#590)randomized_svd
subsolver for the L2 solvers. This can be much
quicker for large numbers of neurons or evaluation points.
(#803)PES.pre_tau
attribute, which sets the time constant on a lowpass
filter of the presynaptic activity.
(#643)EnsembleArray.add_output
now accepts a list of functions
to be computed by each ensemble.
(#562,
#580)LinearFilter
now has an analog
argument which can be set
through its constructor. Linear filters with digital coefficients
can be specified by setting analog
to False
.
(#819)SqrtBeta
distribution, which describes the distribution
of semantic pointer elements.
(#414,
#430)Triangle
synapse, which filters with a triangular FIR filter.
(#660)utils.connection.eval_point_decoding
function, which
provides a connection’s static decoding of a list of evaluation points.
(#700)Simulator.reset
).
(#582,
#616,
#652)Product
network is now more accurate.
(#651)Config.configures
now accepts multiple classes rather than
just one. (#842)add
method to spa.Actions
, which allows
actions to be added after module has been initialized.
(#861,
#862)spa.Bind
(#849)Voja
(Vector Oja) learning rule type, which updates an
ensemble’s encoders to fire selectively for its inputs. (see
examples/learning/learn_associations.ipynb
).
(#727)Voja
learning rule.
(#768)nengo.synapses.LinearFilter
now has an evaluate
method to
evaluate the filter response to sine waves of given frequencies. This can
be used to create Bode plots, for example.
(#945)nengo.spa.Vocabulary
objects now have a readonly
attribute that
can be used to disallow adding new semantic pointers. Vocabulary subsets
are read-only by default.
(#699)Bug fixes
Connection.seed
through the constructor had
no effect. (#724)rmses
values in BuiltConnection.solver_info
when using
NNls
and Nnl2sL2
solvers, and the reg
argument for Nnl2sL2
.
(#839)spa.Vocabulary.create_pointer
now respects the specified number of
creation attempts, and returns the most dissimilar pointer if none can be
found below the similarity threshold.
(#817)with
statements.
(#989)Bug fixes
legacy.txt
file cannot be read.
This can occur if a later version of Nengo is used.API changes
spa.State
object replaces the old spa.Memory
and spa.Buffer
.
These old modules are deprecated and will be removed in 2.2.
(#796)2.0.2 is a bug fix release to ensure that Nengo continues to work with more recent versions of Jupyter (formerly known as the IPython notebook).
Behavioural changes
%load_ext nengo.ipynb
.
(#693)Improvements
[progress]
section to nengorc
which allows setting
progress_bar
and updater
.
(#693)Bug fixes
Behavioural changes
t
as a float (instead of a NumPy scalar)
and x
as a readonly NumPy array (instead of a writeable array).
(#626,
#628)Improvements
rasterplot
works with 0 neurons, and generates much smaller PDFs.
(#601)Bug fixes
Initial release of Nengo 2.0! Supports Python 2.6+ and 3.3+. Thanks to all of the contributors for making this possible!