Skip to content

Releases: nengo/nengo-spa

v2.0.0 release

16 Nov 21:36
Compare
Choose a tag to compare

Changed

  • Made NengoSPA available under the GPLv2 license. (#295)

v1.3.0 release

30 Nov 20:49
cd0bf37
Compare
Choose a tag to compare

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 and VectorsWithProperties vector generators. (#284, #285)
  • Example of how to use learning connections between State modules. (#16, #288)

Removed

  • Python 3.5 support was removed. (#273, #274)

Fixed

  • Scalar arrays like np.array(1) will now be treated as scalars as intended. (#289)

v1.2.0 release

15 Nov 19:49
a95fc0f
Compare
Choose a tag to compare

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 and rinv methods to SemanticPointer for the left and right inverse, respectively. (#265)
  • Add support for the normalized and unitary methods on Semantic Pointer symbols. (#265)

Changed

  • Creating special elements (identity, zero, absorbing element, inverse) of the VtbAlgebra without sidedness argument has been deprecated because these are only right-sided special element. Add the sidedness=ElementSidedness.RIGHT argument to update your code. (#265)
  • The ~ operator has been deprecated for the VtbAlgebra. Use the rinv() 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

03 Nov 20:09
eb05e3a
Compare
Choose a tag to compare

Fixed

  • PointerSymbol precedence handling has been fixed. For example, (sym.A + sym.B) * sym.C will be evaluated correctly now. (#267, #268)

v1.1.0 release

23 Jun 14:53
3cb3b03
Compare
Choose a tag to compare

Added

  • Support division with constant scalars. (#249, #253, #257)

Changed

  • Make AbstractAlgebra an actual abstract base class (using ABCMeta 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 and PointerSymbol.translate now use the keys 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

14 Dec 19:02
7e6d892
Compare
Choose a tag to compare

Changed

  • Add redirects from old URLs to documentation. (#237, #238)

v1.0.0 release

08 Dec 19:17
6384c87
Compare
Choose a tag to compare

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

  • Dropped support for Python 2.7 and 3.4. (#233, #236)

v0.6.2 release

21 Jun 17:14
772ef89
Compare
Choose a tag to compare

Added

  • Add previously missing documentation on the vector_generation module as well as the reinterpret and translate methods of SemanticPointer. (#228, #229)

Fixed

  • Fixed a bug where an exception within an ActionSelection block would lead to every subsequent ActionSelection block to raise an exception. (#230, #231)
  • Nengo SPA is now compatible with pytest 4. Support for earlier versions has been dropped. (#227)

v0.6.1 release

26 Apr 19:58
v0.6.1
Compare
Choose a tag to compare

Changed

  • Minor documentation improvements. (#217, #218)

v0.6.0 release

17 Sep 19:45
Compare
Choose a tag to compare

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 to nengo_spa.action_selection,
    • nengo_spa.pointer to nengo_spa.semantic_pointer,
    • nengo_spa.vocab to nengo_spa.vocabulary,
    • and nengo_spa.modules.assoc_mem to nengo_spa.modules.associative_memory.

    (#199, #205)

  • 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 for Vocabulary to pointer_gen. (#201)

  • Renamed input_a and input_b of the nengo_spa.Bind module to input_left and input_right to account for non-commutative binding methods where the order of operands matters. Also, renamed the invert_a and invert_b arguments to unbind_left and unbind_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 parameter represent_identity to represent_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 because nengo_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 in nengo_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 to nengo_spa.dot. (#202)