# nengo_spa.semantic_pointer¶

Classes

 AbsorbingElement(n_dimensions[, vocab, …]) Absorbing element. Identity(n_dimensions[, vocab, algebra, …]) Identity element. NegativeIdentity(n_dimensions[, vocab, …]) Negative identity element. SemanticPointer(data[, vocab, algebra, name]) A Semantic Pointer, based on Holographic Reduced Representations. SemanticPointerSign(sign, *[, algebra, …]) Sign of a Semantic Pointer. Zero(n_dimensions[, vocab, algebra, sidedness]) Zero element.
class nengo_spa.semantic_pointer.SemanticPointer(data, vocab=None, algebra=None, name=None)[source]

A Semantic Pointer, based on Holographic Reduced Representations.

Operators are overloaded so that + and - are addition, * is circular convolution, and ~ is the two-sided inversion operator. The left and right inverese can be obtained with the linv and rinv methods.

Parameters
• data (array_like) – The vector constituting the Semantic Pointer.

• vocab (Vocabulary, optional) – Vocabulary that the Semantic Pointer is considered to be part of. Mutually exclusive with the algebra argument.

• algebra (AbstractAlgebra, optional) – Algebra used to perform vector symbolic operations on the Semantic Pointer. Defaults to HrrAlgebra. Mutually exclusive with the vocab argument.

• name (str, optional) – A name for the Semantic Pointer.

v

The vector constituting the Semantic Pointer.

Type

array_like

algebra

Algebra that defines the vector symbolic operations on this Semantic Pointer.

Type

AbstractAlgebra

vocab

The vocabulary the this Semantic Pointer is considered to be part of.

Type

Vocabulary or None

name

Name of the Semantic Pointer.

Type

str or None

normalized()[source]

Normalize the Semantic Pointer and return it as a new object.

If the vector length is zero, the Semantic Pointer will be returned unchanged.

The original object is not modified.

unitary()[source]

Make the Semantic Pointer unitary and return it as a new object.

The original object is not modified.

A unitary Semantic Pointer has the property that it does not change the length of Semantic Pointers it is bound with.

sign()[source]

Return the sign of the Semantic Pointer.

See AbstractAlgebra.sign for details on signs of Semantic Pointers.

Returns

Sign of the Semantic Pointer.

Return type

SemanticPointerSign

abs()[source]

Return the absolute Semantic Pointer.

See AbstractAlgebra.abs for details on absolute Semantic Pointers.

copy()[source]

Return another semantic pointer with the same data.

length()[source]

Return the L2 norm of the vector.

__pow__(other)[source]

Binding power of the Semantic Pointer.

Integer exponents are supported for any algebra. See the binding_power documentation of the respective algebra for details about fractional exponents.

Parameters

other (float) – Exponent of the binding power.

Returns

Return type

SemanticPointer

__invert__()[source]

Return a reorganized SemanticPointer that acts as a two-sided inverse for binding.

linv()[source]

Return a reorganized SemanticPointer that acts as a left inverse for binding.

rinv()[source]

Return a reorganized SemanticPointer that acts as a right inverse for binding.

bind(other)[source]

Return the binding of two SemanticPointers.

rbind(other)[source]

Return the binding of two SemanticPointers.

get_binding_matrix(swap_inputs=False)[source]

Return the matrix that does a binding with this vector.

This should be such that A*B == dot(A.get_binding_matrix(), B.v).

dot(other)[source]

Return the dot product of the two vectors.

compare(other)[source]

Return the similarity between two SemanticPointers.

This is the normalized dot product, or (equivalently), the cosine of the angle between the two vectors.

reinterpret(vocab)[source]

Reinterpret the Semantic Pointer as part of vocabulary vocab.

The vocab parameter can be set to None to clear the associated vocabulary and allow the source to be interpreted as part of the vocabulary of any Semantic Pointer it is combined with.

translate(vocab, populate=None, keys=None, solver=None)[source]

Translate the Semantic Pointer to vocabulary vocab.

The translation of a Semantic Pointer uses some form of projection to convert the Semantic Pointer to a Semantic Pointer of another vocabulary. By default the outer products of terms in the source and target vocabulary are used, but if solver is given, it is used to find a least squares solution for this projection.

Parameters
• vocab (Vocabulary) – Target vocabulary.

• populate (bool, optional) – Whether the target vocabulary should be populated with missing keys. This is done by default, but with a warning. Set this explicitly to True or False to silence the warning or raise an error.

• keys (list, optional) – All keys to translate. If None, all keys in the source vocabulary will be translated.

• solver (nengo.Solver, optional) – If given, the solver will be used to solve the least squares problem to provide a better projection for the translation.

distance(other)[source]

Return a distance measure between the vectors.

This is 1-cos(angle), so that it is 0 when they are identical, and the distance gets larger as the vectors are farther apart.

mse(other)[source]

Return the mean-squared-error between two vectors.

class nengo_spa.semantic_pointer.SemanticPointerSign(sign, *, algebra=None, dimensions=None, vocab=None, name=None)[source]

Sign of a Semantic Pointer.

This class acts as proxy to the actual sign instance of the underlying algebra. Use the sign attribute if you want to perform equality checks with other signs.

Parameters
• sign (AbstractSign) – Actual underlying sign.

• algebra (AbstractAlgebra, optional) – The underlying algebra of the Semantic Pointer for which the sign is represented.

• dimensions (int, optional) – Number of dimensions of the Semantic Pointer for which the sign is represented. If not given, vocab must be given.

• vocab (Vocabulary, optional) – Vocabulary of the Semantic Pointer for which the sign is represented. If not given, dimensions must be given. If dimensions and vocab are given, they must agree on the dimensionality.

• name (str or Node, optional) – Name of the Semantic Pointer including the invoked sign operation.

sign

Actual underlying sign

Type

AbstractSign

algebra

The underlying algebra of the Semantic Pointer for which the sign is represented.

Type

AbstractAlgebra or None

dimensions

Number of dimensions of the Semantic Pointer for which the sign is represented.

Type

int

vocab

Vocabulary of the Semantic Pointer for which the sign is represented.

Type

Vocabulary or None

is_positive()[source]

Return whether the sign is positive.

is_negative()[source]

Return whether the sign is negative.

is_zero()[source]

Return whether the sign neither positive nor negative (i.e. zero), but definite.

is_indefinite()[source]

Return whether the sign is neither positive nor negative nor zero.

to_vector(d)[source]

Return the vector in the algebra corresponding to the sign.

Parameters

d (int) – Vector dimensionality.

Returns

Vector corresponding to the sign.

Return type

(d,) ndarray

to_semantic_pointer()[source]

Return the Semantic Pointer corresponding to the represented sign.

Returns

Semantic Pointer corresponding to the represented sign.

Return type

SemanticPointer

class nengo_spa.semantic_pointer.Identity(n_dimensions, vocab=None, algebra=None, *, sidedness=<ElementSidedness.TWO_SIDED: 'two-sided'>)[source]

Identity element.

Parameters
• n_dimensions (int) – Dimensionality of the identity vector.

• vocab (Vocabulary, optional) – Vocabulary that the Semantic Pointer is considered to be part of. Mutually exclusive with the algebra argument.

• algebra (AbstractAlgebra, optional) – Algebra used to perform vector symbolic operations on the Semantic Pointer. Defaults to HrrAlgebra. Mutually exclusive with the vocab argument.

• sidedness (ElementSidedness, optional) – Side in the binding operation on which the element acts as identity.

class nengo_spa.semantic_pointer.NegativeIdentity(n_dimensions, vocab=None, algebra=None, *, sidedness=<ElementSidedness.TWO_SIDED: 'two-sided'>)[source]

Negative identity element.

Parameters
• n_dimensions (int) – Dimensionality of the negative identity vector.

• vocab (Vocabulary, optional) – Vocabulary that the Semantic Pointer is considered to be part of. Mutually exclusive with the algebra argument.

• algebra (AbstractAlgebra, optional) – Algebra used to perform vector symbolic operations on the Semantic Pointer. Defaults to HrrAlgebra. Mutually exclusive with the vocab argument.

• sidedness (ElementSidedness, optional) – Side in the binding operation on which the element acts as identity.

class nengo_spa.semantic_pointer.AbsorbingElement(n_dimensions, vocab=None, algebra=None, *, sidedness=<ElementSidedness.TWO_SIDED: 'two-sided'>)[source]

Absorbing element.

If $$z$$ denotes the absorbing element, $$v \circledast z = c z$$, where $$v$$ is a Semantic Pointer and $$c$$ is a real-valued scalar. Furthermore $$\|z\| = 1$$.

Parameters
• n_dimensions (int) – Dimensionality of the identity vector.

• vocab (Vocabulary, optional) – Vocabulary that the Semantic Pointer is considered to be part of. Mutually exclusive with the algebra argument.

• algebra (AbstractAlgebra, optional) – Algebra used to perform vector symbolic operations on the Semantic Pointer. Defaults to HrrAlgebra. Mutually exclusive with the vocab argument.

• sidedness (ElementSidedness, optional) – Side in the binding operation on which the element acts as absorbing element.

class nengo_spa.semantic_pointer.Zero(n_dimensions, vocab=None, algebra=None, sidedness=<ElementSidedness.TWO_SIDED: 'two-sided'>)[source]

Zero element.

Parameters
• n_dimensions (int) – Dimensionality of the identity vector.

• vocab (Vocabulary, optional) – Vocabulary that the Semantic Pointer is considered to be part of. Mutually exclusive with the algebra argument.

• algebra (AbstractAlgebra, optional) – Algebra used to perform vector symbolic operations on the Semantic Pointer. Defaults to HrrAlgebra. Mutually exclusive with the vocab argument.

• sidedness (ElementSidedness, optional) – Side in the binding operation on which the element acts as zero element.