Skip to main content

AdaptiveSampler

Struct AdaptiveSampler 

Source
pub struct AdaptiveSampler { /* private fields */ }
Expand description

Adaptive sampler that dynamically adjusts sampling strategy based on training progress

This sampler combines multiple sampling strategies and adapts the sampling distribution based on model performance, loss patterns, and sample difficulty over time.

§Examples

use torsh_data::sampler::{AdaptiveSampler, AdaptiveStrategy, Sampler};

let mut sampler = AdaptiveSampler::new(1000, 64)
    .with_adaptation_rate(0.1)
    .with_warmup_epochs(5)
    .with_generator(42);

// Add custom strategy
sampler = sampler.add_strategy(
    AdaptiveStrategy::InverseFrequency { power: 1.0 },
    0.2
);

// During training, update with sample losses
let sample_indices = vec![0, 1, 2, 3, 4];
let losses = vec![0.5, 0.8, 0.3, 0.9, 0.2];
sampler.update_sample_losses(&sample_indices, &losses);

// Set current epoch for adaptation
sampler.set_epoch(10);

// Get adaptive samples
let indices: Vec<usize> = sampler.iter().collect();
assert_eq!(indices.len(), 64);

Implementations§

Source§

impl AdaptiveSampler

Source

pub fn new(dataset_size: usize, num_samples: usize) -> Self

Create a new adaptive sampler

Creates a sampler with default strategies: hard sampling, uniform, and uncertainty.

§Arguments
  • dataset_size - Total size of the dataset
  • num_samples - Number of samples to select per iteration
§Examples
use torsh_data::sampler::AdaptiveSampler;

let sampler = AdaptiveSampler::new(1000, 32);
assert_eq!(sampler.len(), 32);
Source

pub fn add_strategy(self, strategy: AdaptiveStrategy, weight: f64) -> Self

Add a custom sampling strategy

§Arguments
  • strategy - The adaptive strategy to add
  • weight - Initial weight for this strategy (will be normalized)
Source

pub fn with_adaptation_rate(self, rate: f64) -> Self

Set adaptation rate for strategy weight updates

§Arguments
  • rate - Adaptation rate (typically 0.01-0.2)
Source

pub fn with_smoothing_factor(self, factor: f64) -> Self

Set smoothing factor for exponential moving average of losses

§Arguments
  • factor - Smoothing factor (0.0-1.0, higher values = more smoothing)
Source

pub fn with_warmup_epochs(self, epochs: usize) -> Self

Set number of warmup epochs before adaptation begins

§Arguments
  • epochs - Number of warmup epochs
Source

pub fn with_generator(self, seed: u64) -> Self

Set random generator seed

§Arguments
  • seed - Random seed for reproducible sampling
Source

pub fn current_epoch(&self) -> usize

Get the current epoch

Source

pub fn warmup_epochs(&self) -> usize

Get the warmup epochs

Source

pub fn adaptation_rate(&self) -> f64

Get the adaptation rate

Source

pub fn smoothing_factor(&self) -> f64

Get the smoothing factor

Source

pub fn strategy_weights(&self) -> &[f64]

Get the current strategy weights

Source

pub fn strategies(&self) -> &[AdaptiveStrategy]

Get the current strategies

Source

pub fn sample_losses(&self) -> &[f64]

Get sample losses

Source

pub fn sample_difficulties(&self) -> &[f64]

Get sample difficulties

Source

pub fn sample_frequencies(&self) -> &[usize]

Get sample frequencies

Source

pub fn is_warming_up(&self) -> bool

Check if the sampler is in warmup phase

Source

pub fn update_sample_losses(&mut self, sample_indices: &[usize], losses: &[f64])

Update sample losses from training

This method should be called after each training batch to update the sampler’s understanding of sample difficulty.

§Arguments
  • sample_indices - Indices of samples in the batch
  • losses - Corresponding loss values for each sample
§Panics

Panics if the lengths of sample_indices and losses don’t match.

Source

pub fn set_epoch(&mut self, epoch: usize)

Set current epoch for adaptation tracking

§Arguments
  • epoch - Current training epoch
Source

pub fn reset(&mut self)

Reset sampler state

Source

pub fn adaptive_stats(&self) -> AdaptiveStats

Get statistics about the current adaptive sampling state

Trait Implementations§

Source§

impl Clone for AdaptiveSampler

Source§

fn clone(&self) -> AdaptiveSampler

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Sampler for AdaptiveSampler

Source§

type Iter = SamplerIterator

Iterator type returned by the sampler
Source§

fn iter(&self) -> Self::Iter

Create an iterator over indices
Source§

fn len(&self) -> usize

Total number of samples that will be yielded
Source§

fn is_empty(&self) -> bool

Check if sampler is empty
Source§

fn into_batch_sampler( self, batch_size: usize, drop_last: bool, ) -> BatchingSampler<Self>
where Self: Sized,

Convert this sampler into a batch sampler
Source§

fn into_distributed( self, num_replicas: usize, rank: usize, ) -> DistributedWrapper<Self>
where Self: Sized,

Create a distributed version of this sampler

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

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

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V