Fix bug in definition of ml default value
This commit is contained in:
parent
23a51390b7
commit
0b09e8e431
|
@ -52,7 +52,7 @@ impl Builder {
|
||||||
|
|
||||||
/// Set the `mL` parameter from the paper
|
/// Set the `mL` parameter from the paper
|
||||||
///
|
///
|
||||||
/// If the `mL` parameter is not already set, it defaults to `ln(M)`.
|
/// If the `mL` parameter is not already set, it defaults to `1.0 / ln(M)`.
|
||||||
pub fn ml(mut self, ml: f32) -> Self {
|
pub fn ml(mut self, ml: f32) -> Self {
|
||||||
self.ml = Some(ml);
|
self.ml = Some(ml);
|
||||||
self
|
self
|
||||||
|
@ -127,7 +127,7 @@ where
|
||||||
fn new(points: &[P], builder: Builder) -> (Self, Vec<PointId>) {
|
fn new(points: &[P], builder: Builder) -> (Self, Vec<PointId>) {
|
||||||
let ef_search = builder.ef_search.unwrap_or(100);
|
let ef_search = builder.ef_search.unwrap_or(100);
|
||||||
let ef_construction = builder.ef_construction.unwrap_or(100);
|
let ef_construction = builder.ef_construction.unwrap_or(100);
|
||||||
let ml = builder.ml.unwrap_or_else(|| (M as f32).ln());
|
let ml = builder.ml.unwrap_or_else(|| 1.0 / (M as f32).ln());
|
||||||
let heuristic = builder.heuristic;
|
let heuristic = builder.heuristic;
|
||||||
let mut rng = match builder.seed {
|
let mut rng = match builder.seed {
|
||||||
Some(seed) => SmallRng::seed_from_u64(seed),
|
Some(seed) => SmallRng::seed_from_u64(seed),
|
||||||
|
|
|
@ -202,7 +202,7 @@ pub(crate) struct LayerId(pub usize);
|
||||||
impl LayerId {
|
impl LayerId {
|
||||||
pub(crate) fn random(ml: f32, rng: &mut SmallRng) -> Self {
|
pub(crate) fn random(ml: f32, rng: &mut SmallRng) -> Self {
|
||||||
let layer = rng.gen::<f32>();
|
let layer = rng.gen::<f32>();
|
||||||
LayerId((-(layer.ln() * ml)).floor() as usize)
|
LayerId((-layer.ln() * ml).floor() as usize)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn descend(&self) -> impl Iterator<Item = LayerId> {
|
pub(crate) fn descend(&self) -> impl Iterator<Item = LayerId> {
|
||||||
|
|
Loading…
Reference in New Issue