pub struct ImportanceSampler { /* private fields */ }Expand description
Importance sampling for biased data handling
This sampler adjusts sampling probabilities to correct for dataset bias or to emphasize certain types of samples during training. It allows for sophisticated control over the sampling distribution through importance weights.
§Examples
ⓘ
use torsh_data::sampler::{ImportanceSampler, Sampler};
// Create importance weights (higher = more important)
let importance_weights = vec![0.1, 0.5, 1.0, 0.3, 0.8];
let sampler = ImportanceSampler::new(importance_weights, 3, true)
.with_temperature(0.5)
.with_generator(42);
let indices: Vec<usize> = sampler.iter().collect();
assert_eq!(indices.len(), 3);Implementations§
Source§impl ImportanceSampler
impl ImportanceSampler
Sourcepub fn new(
importance_weights: Vec<f64>,
num_samples: usize,
replacement: bool,
) -> Self
pub fn new( importance_weights: Vec<f64>, num_samples: usize, replacement: bool, ) -> Self
Create a new importance sampler
§Arguments
importance_weights- Importance weights for each sample (higher = more important)num_samples- Number of samples to selectreplacement- Whether to sample with replacement
§Panics
Panics if importance_weights is empty or contains negative values.
§Examples
ⓘ
use torsh_data::sampler::ImportanceSampler;
let weights = vec![1.0, 2.0, 0.5, 3.0]; // Index 3 is most important
let sampler = ImportanceSampler::new(weights, 2, false);Sourcepub fn with_temperature(self, temperature: f64) -> Self
pub fn with_temperature(self, temperature: f64) -> Self
Set temperature for softmax scaling of importance weights
Temperature controls the sharpness of the importance distribution:
- Higher temperature (> 1.0) = more uniform sampling
- Lower temperature (< 1.0) = more biased toward high importance samples
- Temperature = 1.0 = no scaling
§Arguments
temperature- Temperature value (must be positive)
§Examples
ⓘ
use torsh_data::sampler::ImportanceSampler;
let weights = vec![1.0, 2.0, 3.0];
let sampler = ImportanceSampler::new(weights, 2, true)
.with_temperature(0.5); // More emphasis on high importanceSourcepub fn with_generator(self, seed: u64) -> Self
pub fn with_generator(self, seed: u64) -> Self
Sourcepub fn importance_weights(&self) -> &[f64]
pub fn importance_weights(&self) -> &[f64]
Get the importance weights
Sourcepub fn num_samples(&self) -> usize
pub fn num_samples(&self) -> usize
Get the number of samples
Sourcepub fn replacement(&self) -> bool
pub fn replacement(&self) -> bool
Check if sampling with replacement
Sourcepub fn temperature(&self) -> f64
pub fn temperature(&self) -> f64
Get the temperature
Sourcepub fn update_weights(&mut self, new_weights: Vec<f64>)
pub fn update_weights(&mut self, new_weights: Vec<f64>)
Sourcepub fn sampling_stats(&self) -> ImportanceStats
pub fn sampling_stats(&self) -> ImportanceStats
Get sampling statistics
Trait Implementations§
Source§impl Clone for ImportanceSampler
impl Clone for ImportanceSampler
Source§fn clone(&self) -> ImportanceSampler
fn clone(&self) -> ImportanceSampler
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 moreSource§impl Debug for ImportanceSampler
impl Debug for ImportanceSampler
Source§impl Sampler for ImportanceSampler
impl Sampler for ImportanceSampler
Source§type Iter = SamplerIterator
type Iter = SamplerIterator
Iterator type returned by the sampler
Source§fn into_batch_sampler(
self,
batch_size: usize,
drop_last: bool,
) -> BatchingSampler<Self>where
Self: Sized,
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,
fn into_distributed(
self,
num_replicas: usize,
rank: usize,
) -> DistributedWrapper<Self>where
Self: Sized,
Create a distributed version of this sampler
Auto Trait Implementations§
impl Freeze for ImportanceSampler
impl RefUnwindSafe for ImportanceSampler
impl Send for ImportanceSampler
impl Sync for ImportanceSampler
impl Unpin for ImportanceSampler
impl UnsafeUnpin for ImportanceSampler
impl UnwindSafe for ImportanceSampler
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.