pub struct HomeostaticNeuralClusterer { /* private fields */ }Expand description
Advanced homeostatic plasticity for neuromorphic spatial learning
This clusterer implements homeostatic plasticity mechanisms that maintain stable neural activity levels while adapting to input patterns. It includes intrinsic plasticity, synaptic scaling, and multi-timescale adaptation.
§Features
- Homeostatic neurons with intrinsic plasticity
- Synaptic scaling for stability
- Multi-timescale adaptation (fast, medium, slow)
- Metaplasticity for adaptive learning rates
- Target firing rate maintenance
§Example
use scirs2_core::ndarray::Array2;
use scirs2_spatial::neuromorphic::algorithms::HomeostaticNeuralClusterer;
let points = Array2::from_shape_vec((4, 2), vec![
0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0
]).unwrap();
let mut clusterer = HomeostaticNeuralClusterer::new(2, 2)
.with_homeostatic_params(0.1, 1000.0);
let assignments = clusterer.fit(&points.view(), 50).unwrap();Implementations§
Source§impl HomeostaticNeuralClusterer
impl HomeostaticNeuralClusterer
Sourcepub fn with_homeostatic_params(
self,
target_firing_rate: f64,
homeostatic_tau: f64,
) -> Self
pub fn with_homeostatic_params( self, target_firing_rate: f64, homeostatic_tau: f64, ) -> Self
Configure homeostatic parameters
§Arguments
target_firing_rate- Target firing rate for neuronshomeostatic_tau- Time constant for homeostatic adaptation
Sourcepub fn fit(
&mut self,
points: &ArrayView2<'_, f64>,
epochs: usize,
) -> SpatialResult<Array1<usize>>
pub fn fit( &mut self, points: &ArrayView2<'_, f64>, epochs: usize, ) -> SpatialResult<Array1<usize>>
Fit homeostatic clustering model
Trains the network using homeostatic plasticity mechanisms to discover stable cluster representations while maintaining target activity levels.
§Arguments
points- Input spatial points (n_points × n_dims)epochs- Number of training epochs
§Returns
Cluster assignments for each input point
Sourcepub fn get_cluster_centers(&self) -> Array2<f64>
pub fn get_cluster_centers(&self) -> Array2<f64>
Get cluster centers (weights)
Sourcepub fn num_clusters(&self) -> usize
pub fn num_clusters(&self) -> usize
Get number of clusters
Sourcepub fn neuron_firing_rates(&self) -> Vec<f64>
pub fn neuron_firing_rates(&self) -> Vec<f64>
Get neuron firing rates
Sourcepub fn current_learning_rate(&self) -> f64
pub fn current_learning_rate(&self) -> f64
Get current learning rate
Trait Implementations§
Source§impl Clone for HomeostaticNeuralClusterer
impl Clone for HomeostaticNeuralClusterer
Source§fn clone(&self) -> HomeostaticNeuralClusterer
fn clone(&self) -> HomeostaticNeuralClusterer
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for HomeostaticNeuralClusterer
impl RefUnwindSafe for HomeostaticNeuralClusterer
impl Send for HomeostaticNeuralClusterer
impl Sync for HomeostaticNeuralClusterer
impl Unpin for HomeostaticNeuralClusterer
impl UnwindSafe for HomeostaticNeuralClusterer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.