Encoding Base Class
Constructor parameters
All encoding classes share this constructor signature:
Encoding(
dimension=10_000,
backend=None,
device=None,
dtype=None,
mask=None,
generator=None,
similarity_remap=None,
)
Parameter |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Number of elements per hypervector. |
|
|
|
|
|
|
|
PyTorch device string ( |
|
dtype or |
|
Override the encoding’s default data type. If |
|
|
|
Bit mask for |
|
|
|
Custom random generator. If |
|
|
|
Function applied to every similarity result. E.g.,
|
Properties
- property Encoding.dimension: int
Number of elements per hypervector.
- property Encoding.backend: str
"numpy"or"torch".
- property Encoding.device: str or None
PyTorch device string, or
Nonefor the NumPy backend.
Methods
- Encoding.generate(size=None, backend=None, device=None, use_generator=None)
Generate one or more hypervectors.
- Parameters:
size –
None-> single(D,)vector;int-> a single vector of that dimension;tuple(D, N)-> a dimension-first batch ofNvectors (each column a hypervector).backend – Override the encoding’s default backend for this call.
device – Override the encoding’s default device for this call.
use_generator –
Trueforces the custom generator;Falseforces NumPy’s default;Noneuses the encoding’s setting.
- Returns:
Hypervector
- Encoding.zeros(size=None, backend=None, device=None)
Return a zero-valued hypervector or batch.
- Returns:
Hypervector
- Encoding.from_array(array, backend=None)
Wrap an existing NumPy array or PyTorch tensor as a
Hypervector.- Parameters:
array –
ndarrayorTensorwith last dimension equal toself.dimension.backend – Override backend detection.
- Returns:
Hypervector- Raises:
DimensionsNotMatchingError – If the array’s last dimension ≠
self.dimension.
- Encoding.similarity(hvA, hvB=None)
Compute similarity. Accepts
Hypervectorobjects, raw arrays, or lists. IfhvBis omitted,hvAmust be a(D, N)batch and column 0 is compared against each remaining column. See batched calling conventions.- Parameters:
mode –
"pairwise"(default) or"cross". With"cross", a(D, P)batch and a(D, M)batch give the full(P, M)cross-similarity matrix.- Returns:
float,ndarray,Tensor, orlistdepending on inputs.
- Encoding.bundle(*hypervectors, axis=None, batch_dim=None)
Bundle hypervectors. A batched
(D, *batch)input is reduced automatically.axis=selects which batch axis to collapse (an int or a tuple of ints, defaulting to the last). Axis 0 is the hypervector dimension and cannot be reduced.- Parameters:
hypervectors – Positional
Hypervectorarguments, a batched array, or a list of lists for grouped bundling.axis – Batch axis (or tuple of axes) to reduce.
batch_dim – Deprecated as of 2.1.0; emits
DeprecationWarningand will be removed. Pass a batched array or useaxis=.
- Returns:
Hypervectororlist[Hypervector]
- Encoding.bind(*hypervectors, batch_dim=None)
Bind hypervectors. Batched inputs are handled automatically. The element-wise binders broadcast, and every other binder is applied per column, returning one batched result.
- Parameters:
batch_dim – Deprecated as of 2.1.0, emits
DeprecationWarningand will be removed in a future release. Pass a batched array instead.- Returns:
Hypervector
- Encoding.unbind(*hypervectors, batch_dim=None)
Unbind to recover a component. Batched inputs are handled automatically, the same way as
bind().- Parameters:
batch_dim – Deprecated as of 2.1.0; emits
DeprecationWarningand will be removed in a future release. Pass a batched array instead.- Raises:
NotImplementedError – For encodings that do not support unbinding.
- Returns:
Hypervector
- Encoding.thin(hypervector)
Apply the encoding’s thinning operation.
- Returns:
Hypervectororlist[Hypervector]
- Encoding.set_generator(generator)
Replace the encoding’s generator.
- Parameters:
generator – A
HDCGeneratorinstance.
- Encoding.get_generator()
Return the current generator.
- Returns:
HDCGenerator
Abstract method (for subclassers)
- Encoding._get_encoding_spec()
Return an
EncodingSpecthat wires together the component functions for this encoding.- Returns:
EncodingSpec
EncodingSpec dataclass
- class pyhdc.EncodingSpec
Specification dataclass that links an encoding to its component functions.
Field
Description
dtypeNumPy data type for elements (e.g.,
np.float32,np.int8)element_generatorCallable producing random element values given
(size, dtype)similarity_fnCallable implementing the similarity metric
bundling_fnCallable implementing bundling
thinning_fnCallable implementing thinning (or
NoThinif not applicable)binding_fnCallable implementing binding
unbinding_fnCallable implementing unbinding
maskOptional integer bit mask (used by
MAP_I_Bits)generator_output_type"bits","words", or"floats": the output type this encoding requires from a custom generatorpermute_fnCallable for cyclic-shift permutation.
Nonefalls back to the sharedCyclicShiftso every encoding supportspermuteinverse_fnCallable for the binding inverse. Defaults to
RaiseNotImplementedErrornormalize_fnCallable normalizing to the encoding’s entry domain. Defaults to
RaiseNotImplementedErrornegative_fnCallable for the additive (bundling) inverse. Defaults to
RaiseNotImplementedError
BackendManager
- class pyhdc.BackendManager
Static utility for backend detection and conversion.
- static get_backend(array)
Return
"numpy"or"torch"for the given array.
- static to_numpy(array)
Convert to
numpy.ndarray. Detaches from autograd if needed.
- static to_torch(array, device=None)
Convert to
torch.Tensoron the specified device.
- static get_device(array)
Return the device string of a tensor, or
Nonefor NumPy arrays.