Releases: nengo/nengo-spa
v2.0.0 release
v1.3.0 release
1.3.0 (November 30, 2021)
Added
- Support for (fractional) binding powers and the notion of signs in algebras and for SemanticPointer instances. (#271, #286)
EquallySpacedPositiveUnitaryHrrVectors
andVectorsWithProperties
vector generators. (#284, #285)- Example of how to use learning connections between
State
modules. (#16, #288)
Removed
Fixed
- Scalar arrays like
np.array(1)
will now be treated as scalars as intended. (#289)
v1.2.0 release
Added
- Transposed Vector-derived Transformation Binding (TVTB) algebra which has essentially the same properties as the existing VTB algebra, but has two-sided identities and inverses (opposed to VTB where these are right-sided only). The only difference in the math is that TVTB transposes the matrix used in the binding operation. (#266)
- Differentiation between left, right, and two-sided special elements (identity, zero, absorbing element, inverse) of an algebra. (#265)
- Added
linv
andrinv
methods toSemanticPointer
for the left and right inverse, respectively. (#265) - Add support for the
normalized
andunitary
methods on Semantic Pointer symbols. (#265)
Changed
- Creating special elements (identity, zero, absorbing element, inverse) of the
VtbAlgebra
withoutsidedness
argument has been deprecated because these are only right-sided special element. Add thesidedness=ElementSidedness.RIGHT
argument to update your code. (#265) - The
~
operator has been deprecated for theVtbAlgebra
. Use therinv()
method instead. (#265) - Improved automatic names for
SemanticPointer
that only contain parenthesis where actually needed. In addition, syntax is considered when shortening a name exceeding the maximum length. (#255, #270)
v1.1.1 release
v1.1.0 release
Added
Changed
- Make
AbstractAlgebra
an actual abstract base class (usingABCMeta
as meta-class). While still supported, this deprecates pure duck-typing for algebras. (#240) - Raise an exception when a Semantic Pointer is added to a vocabulary with a differing algebra. (#239, #240)
- All examples now have seeds to ensure that occasional "bad seeds" do not create problems in the documentation. (#248)
Fixed
SemanticPointer.translate
andPointerSymbol.translate
now use thekeys
argument; previously, this argument was mistakenly ignored. (#248)- Fixed an issue where the names of iteratively generated semantic pointers could grow exponentially in length, by truncating them at 1 KB. (#244, #246)
- Allow NumPy scalars in place of Python scalars for binary operations on SemanticPointer instances. (#250, #257)
- The SPA sequence example was not working properly due to a missing connection. (#258, #259)
v1.0.1 release
v1.0.0 release
Changed
- Ensure compatibility with Nengo 3. (#225, #233, #236)
- Modules and networks no longer set a default label. This will give more useful labels by default in Nengo GUI (assuming the latest dev version). (#234, #235)
- All networks have been converted to classes. This will give more useful labels by default in Nengo GUI (assuming the latest dev version). (#234, #235)
Removed
v0.6.2 release
v0.6.1 release
v0.6.0 release
Added
- Support for algebras that allow to use binding operations other than circular convolution. This includes an implementation of vector-derived transformation binding (VTB) and the
nengo_spa.networks.VTB
network to perform this particular binding operation. (#69, #198) - Added generators for vectors with different properties that can be used to define how vectors are created in a vocabulary (e.g., axis-aligned, orthogonal, unitary). (#201, #129)
- Added a matrix multiplication network
nengo_spa.networks.MatrixMult
based on the nengo-extras implementation. (#198) - Allow to connect to the utility node returned by ifmax with the SPA >> operator. (#190, #194)
- The Semantic Pointer names AbsorbingElement, Identity, and Zero now have a special meaning in Vocabulary and nengo_spa.sym and will return the respective special Semantic Pointers. (#195, #176)
- SemanticPointer instance can now track names for improved labeling in Nengo GUI. (#202, #184)
- Label the utility nodes for the action selection. (#202)
Changed
-
A number of module names have been changed for better naming consistency. In particular,
nengo_spa.actions
tonengo_spa.action_selection
,nengo_spa.pointer
tonengo_spa.semantic_pointer
,nengo_spa.vocab
tonengo_spa.vocabulary
,- and
nengo_spa.modules.assoc_mem
tonengo_spa.modules.associative_memory
.
-
Require the
mapping
argument for associative memories. In addition to dictionaries and the string'by-key'
, a sequence of strings can be passed in to create an auto-associative memory. (#177) -
Changed the
rng
argument forVocabulary
topointer_gen
. (#201) -
Renamed
input_a
andinput_b
of thenengo_spa.Bind
module toinput_left
andinput_right
to account for non-commutative binding methods where the order of operands matters. Also, renamed theinvert_a
andinvert_b
arguments tounbind_left
andunbind_right
to reflect that some binding methods might not have inverse vectors, but might still be able to do unbinding. (#69, #198) -
Renamed the
nengo_spa.State
parameterrepresent_identity
torepresent_cc_identity
to reflect that it only optimizes for the circular convolution identity, but not the identity for other binding operations. (#212)
Removed
- Removed
nengo_spa.networks.circularconvolution.circconv
becausenengo_spa.algebras.CircularConvolutionAlgebra
provides the same functionality. (#198) - The
SemanticPointer
class does no longer accept a single integer as dimensionality to create a random vector. Use the new generators innengo_spa.vector_generation
instead. (#201)
Fixed
- Raise an exception instead of returning incorrect results from
prob_cleanup
. Also, fix the function's incorrect documentation. (#203, #206) - Fix
nengo_spa.ActionSelection.keys()
when no named actions have been provided. (#210) - Do not create an unnecessary compare network when computing a dot product with a
SemanticPointer
instance. (#202) - Handle
SemanticPointer
instances correctly as first argument tonengo_spa.dot
. (#202)