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)
EquallySpacedPositiveUnitaryHrrVectorsandVectorsWithPropertiesvector generators. (#284, #285)- Example of how to use learning connections between
Statemodules. (#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
linvandrinvmethods toSemanticPointerfor the left and right inverse, respectively. (#265) - Add support for the
normalizedandunitarymethods on Semantic Pointer symbols. (#265)
Changed
- Creating special elements (identity, zero, absorbing element, inverse) of the
VtbAlgebrawithoutsidednessargument has been deprecated because these are only right-sided special element. Add thesidedness=ElementSidedness.RIGHTargument to update your code. (#265) - The
~operator has been deprecated for theVtbAlgebra. Use therinv()method instead. (#265) - Improved automatic names for
SemanticPointerthat 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
AbstractAlgebraan actual abstract base class (usingABCMetaas 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.translateandPointerSymbol.translatenow use thekeysargument; 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.VTBnetwork 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.MatrixMultbased 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.actionstonengo_spa.action_selection,nengo_spa.pointertonengo_spa.semantic_pointer,nengo_spa.vocabtonengo_spa.vocabulary,- and
nengo_spa.modules.assoc_memtonengo_spa.modules.associative_memory.
-
Require the
mappingargument 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
rngargument forVocabularytopointer_gen. (#201) -
Renamed
input_aandinput_bof thenengo_spa.Bindmodule toinput_leftandinput_rightto account for non-commutative binding methods where the order of operands matters. Also, renamed theinvert_aandinvert_barguments tounbind_leftandunbind_rightto reflect that some binding methods might not have inverse vectors, but might still be able to do unbinding. (#69, #198) -
Renamed the
nengo_spa.Stateparameterrepresent_identitytorepresent_cc_identityto 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.circconvbecausenengo_spa.algebras.CircularConvolutionAlgebraprovides the same functionality. (#198) - The
SemanticPointerclass does no longer accept a single integer as dimensionality to create a random vector. Use the new generators innengo_spa.vector_generationinstead. (#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
SemanticPointerinstance. (#202) - Handle
SemanticPointerinstances correctly as first argument tonengo_spa.dot. (#202)