mirror of
https://github.com/ankitects/anki.git
synced 2025-09-21 07:22:23 -04:00
Fix/FSRS-6 doesn't give <1d intervals & use log loss instead of RMSE(bins) (#3948)
* Fix/FSRS-6 doesn't give <1d intervals https://forums.ankiweb.net/t/anki-25-05-beta-1/59710/8?u=l.m.sherlock * use log loss instead of rmse to determine use which parameters
This commit is contained in:
parent
0321c26e73
commit
a5778f3377
2 changed files with 4 additions and 4 deletions
|
@ -468,7 +468,7 @@ impl Collection {
|
||||||
self.get_config_bool(BoolKey::FsrsShortTermWithStepsEnabled);
|
self.get_config_bool(BoolKey::FsrsShortTermWithStepsEnabled);
|
||||||
let fsrs_allow_short_term = if fsrs_enabled {
|
let fsrs_allow_short_term = if fsrs_enabled {
|
||||||
let params = config.fsrs_params();
|
let params = config.fsrs_params();
|
||||||
if params.len() == 19 {
|
if params.len() >= 19 {
|
||||||
params[17] > 0.0 && params[18] > 0.0
|
params[17] > 0.0 && params[18] > 0.0
|
||||||
} else {
|
} else {
|
||||||
false
|
false
|
||||||
|
|
|
@ -116,10 +116,10 @@ impl Collection {
|
||||||
})?;
|
})?;
|
||||||
progress_thread.join().ok();
|
progress_thread.join().ok();
|
||||||
if let Ok(fsrs) = FSRS::new(Some(current_params)) {
|
if let Ok(fsrs) = FSRS::new(Some(current_params)) {
|
||||||
let current_rmse = fsrs.evaluate(items.clone(), |_| true)?.rmse_bins;
|
let current_log_loss = fsrs.evaluate(items.clone(), |_| true)?.log_loss;
|
||||||
let optimized_fsrs = FSRS::new(Some(¶ms))?;
|
let optimized_fsrs = FSRS::new(Some(¶ms))?;
|
||||||
let optimized_rmse = optimized_fsrs.evaluate(items.clone(), |_| true)?.rmse_bins;
|
let optimized_log_loss = optimized_fsrs.evaluate(items.clone(), |_| true)?.log_loss;
|
||||||
if current_rmse <= optimized_rmse {
|
if current_log_loss <= optimized_log_loss {
|
||||||
if num_of_relearning_steps <= 1 {
|
if num_of_relearning_steps <= 1 {
|
||||||
params = current_params.to_vec();
|
params = current_params.to_vec();
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue