Release 0.3.0
Added
- Use logger for debug/builder output
- Implemented TensorFlow gradients for sparse Variable update Ops, to allow
models with those elements to be trained - Added tutorial/examples on using
Simulator.train
- Added support for training models when
unroll_simulation=False
- Compatibility changes for Nengo 2.4.0
- Added a new graph planner algorithm, which can improve simulation speed at
the cost of build time
Changed
-
Significant improvements to simulation speed
- Use sparse Variable updates for signals.scatter/gather
- Improved graph optimizer memory organization
- Implemented sparse matrix multiplication op, to allow more aggressive
merging of DotInc operators
-
Significant improvements to build speed
- Added early termination to graph optimization
- Algorithmic improvements to graph optimization functions
-
Reorganized documentation to more clearly direct new users to relevant
material
Fixed
- Fix bug where passing a built model to the Simulator more than once would
result in an error - Cache result of calls to
tensor_graph.build_loss/build_optimizer
, so that
we don't unnecessarily create duplicate elements in the graph on repeated
calls - Fix support for Variables on GPU when
unroll_simulation=False
- SimPyFunc operators will always be assigned to CPU, even when
device="/gpu:0"
, since there is no GPU kernel - Fix bug where
Simulator.loss
was not being computed correctly for
models with internal state - Data/targets passed to
Simulator.train
will be truncated if not evenly
divisible by the specified minibatch size - Fixed bug where in some cases Nodes with side effects would not be run if
their output was not used in the simulation - Fixed bug where strided reads that cover a full array would be interpreted as
non-strided reads of the full array