artlib.optimized.backends.torch.BinaryFuzzyARTMAP ================================================= .. py:module:: artlib.optimized.backends.torch.BinaryFuzzyARTMAP .. autoapi-nested-parse:: Binary Fuzzy ARTMAP (Torch-accelerated backend) Classes ------- .. autoapisummary:: artlib.optimized.backends.torch.BinaryFuzzyARTMAP._TorchBinaryFuzzyARTMAPConfig artlib.optimized.backends.torch.BinaryFuzzyARTMAP._TorchBinaryFuzzyARTMAP artlib.optimized.backends.torch.BinaryFuzzyARTMAP.BinaryFuzzyARTMAP Functions --------- .. autoapisummary:: artlib.optimized.backends.torch.BinaryFuzzyARTMAP._to_device artlib.optimized.backends.torch.BinaryFuzzyARTMAP._complement_code_any Module Contents --------------- .. py:function:: _to_device(x: Union[torch.Tensor, numpy.ndarray], device, dtype=torch.bool) -> torch.Tensor .. py:function:: _complement_code_any(x: torch.Tensor) -> torch.Tensor Complement-code that works for float or bool tensors. .. py:class:: _TorchBinaryFuzzyARTMAPConfig .. py:attribute:: input_dim :type: int .. py:attribute:: alpha :type: float :value: 1e-10 .. py:attribute:: rho :type: float :value: 0.75 .. py:attribute:: epsilon :type: float :value: 1e-07 .. py:attribute:: match_tracking :type: bool :value: True .. py:attribute:: device :type: str :value: 'cuda' .. py:attribute:: dtype :type: torch.dtype :value: Ellipsis .. py:attribute:: clamp_inputs :type: bool :value: True .. py:attribute:: fallback_to_choice_on_fail :type: bool :value: True .. py:class:: _TorchBinaryFuzzyARTMAP(cfg: _TorchBinaryFuzzyARTMAPConfig) Torch-accelerated Binary Fuzzy ARTMAP with export hooks for artlib sync. .. py:attribute:: cfg .. py:attribute:: device .. py:attribute:: dtype .. py:attribute:: input_dim .. py:attribute:: code_dim .. py:attribute:: W :type: Optional[torch.Tensor] :value: None .. py:attribute:: map_y :type: Optional[torch.Tensor] :value: None .. py:attribute:: _lower_bounds :type: Optional[torch.Tensor] :value: None .. py:attribute:: _upper_bounds :type: Optional[torch.Tensor] :value: None .. py:attribute:: _prep_tol :type: float :value: 1e-06 .. py:property:: n_cat :type: int .. py:method:: _ensure_capacity() .. py:method:: set_data_bounds(lower: Union[torch.Tensor, numpy.ndarray], upper: Union[torch.Tensor, numpy.ndarray]) .. py:method:: prepare_data(X: Union[torch.Tensor, numpy.ndarray]) -> torch.Tensor Optional helper: normalize -> complement-code -> binarize -> bool. If your inputs are already binary and complement-coded, skip this and pass them straight to partial_fit_and_export/predict_*. .. py:method:: _validate_prepared(X: torch.Tensor) .. py:method:: _free_mem_bytes() -> int .. py:method:: _choice_and_match(I: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor] For a single prepared binary input I (bool), return: T: [K] choice values m: [K] match values w_sum: [K] |w| (as float64) .. py:method:: _commit_new_category(I: torch.Tensor, y: int) .. py:method:: partial_fit_and_export(X_prepared: Union[torch.Tensor, numpy.ndarray], y: Union[torch.Tensor, numpy.ndarray], epsilon: float = 1e-10, match_tracking: Literal['MT+', 'MT-', 'MT0', 'MT1', 'MT~'] = 'MT+') -> Tuple[numpy.ndarray, list[numpy.ndarray], numpy.ndarray] Incremental training on already-prepared, binary, complement-coded inputs. :returns: (N,) chosen A-side category indices (int) weights_arrays: list of K arrays, each weight as uint8 cluster_labels_out: (K,) map from A categories to B labels (int) :rtype: labels_a_out .. py:method:: predict_ab_prepared(X_prepared: Union[torch.Tensor, numpy.ndarray]) -> Tuple[numpy.ndarray, numpy.ndarray] .. py:class:: BinaryFuzzyARTMAP(rho: float, alpha: float, input_dim: Optional[int] = None, device: str = 'cuda') Bases: :py:obj:`artlib.optimized.backends.torch._TorchSimpleARTMAP._TorchSimpleARTMAP` BinaryFuzzyARTMAP for Classification. optimized with torch. This module implements BinaryFuzzyARTMAP BinaryFuzzyARTMAP is a non-modular classification model which has been highly optimized for run-time performance. Fit and predict functions are implemented in torch for efficient execution. This class acts as a wrapper for the underlying torch functions and to provide compatibility with the artlib style and usage. Functionally, BinaryFuzzyARTMAP behaves as a special case of :class:`~artlib.supervised.SimpleARTMAP.SimpleARTMAP` instantiated with :class:`~artlib.elementary.BinaryFuzzyART.BinaryFuzzyART`. .. py:attribute:: _device :value: 'cuda' .. py:attribute:: _backend :type: Optional[_TorchBinaryFuzzyARTMAP] :value: None .. py:attribute:: _declared_input_dim :value: None .. py:method:: _ensure_backend(X: numpy.ndarray) Initialize backend using prepared X to infer raw dimension when needed.