10 template <label_parser& lp>
24 for (
size_t n = 0; n <
N; n++)
26 lp.delete_label(&buf[n].l);
34 template <
bool is_learn, label_parser& lp>
39 if (!is_learn || lp.get_weight(&ec.
l) == 0.)
42 for (
size_t replay = 1; replay < er.
replay_count; replay++)
44 size_t n = (size_t)(er.
_random_state->get_and_update_random() * (float)er.
N);
49 size_t n = (size_t)(er.
_random_state->get_and_update_random() * (float)er.
N);
56 lp.copy_label(&er.
buf[n].
l, &ec.
l);
61 template <label_parser& lp>
65 base.
multipredict(ec, count, step, pred, finalize_predictions);
68 template <label_parser& lp>
72 for (
size_t n = 0; n < er.
N; n++)
80 template <
char er_level, label_parser& lp>
83 std::string replay_string =
"replay_";
84 replay_string += er_level;
85 std::string replay_count_string = replay_string;
86 replay_count_string +=
"_count";
88 auto er = scoped_calloc_or_throw<expreplay<lp>>();
93 .help(
"use experience replay at a specified level [b=classification/regression, m=multiclass, c=cost " 94 "sensitive] with specified buffer size"))
97 .help(
"how many times (in expectation) should each example be played (default: 1 = permuting)"));
109 for (
size_t n = 0; n < er->N; n++) er->buf[n].l.cs.costs = v_init<COST_SENSITIVE::wclass>();
111 er->filled = calloc_or_throw<bool>(er->N);
114 std::cerr <<
"experience replay level=" << er_level <<
", buffer=" << er->N <<
", replay count=" << er->replay_count
119 &
init_learner(er, er->base, predict_or_learn<true, lp>, predict_or_learn<false, lp>);
void predict(E &ec, size_t i=0)
void end_pass(expreplay< lp > &er)
void predict_or_learn(expreplay< lp > &er, LEARNER::single_learner &base, example &ec)
void copy_example_data(bool audit, example *dst, example *src)
std::shared_ptr< rand_state > _random_state
void dealloc_example(void(*delete_label)(void *), example &ec, void(*delete_prediction)(void *))
base_learner * make_base(learner< T, E > &base)
virtual void add_and_parse(const option_group_definition &group)=0
example * alloc_examples(size_t, size_t count=1)
std::shared_ptr< rand_state > get_random_state()
single_learner * as_singleline(learner< T, E > *l)
learner< T, E > & init_learner(free_ptr< T > &dat, L *base, void(*learn)(T &, L &, E &), void(*predict)(T &, L &, E &), size_t ws, prediction_type::prediction_type_t pred_type)
virtual bool was_supplied(const std::string &key)=0
LEARNER::base_learner * expreplay_setup(VW::config::options_i &options, vw &all)
int add(svm_params ¶ms, svm_example *fec)
typed_option< T > make_option(std::string name, T &location)
void set_end_pass(void(*f)(T &))
std::vector< std::string > interactions
void multipredict(E &ec, size_t lo, size_t count, polyprediction *pred, bool finalize_predictions)
LEARNER::base_learner * setup_base(options_i &options, vw &all)
void learn(E &ec, size_t i=0)
LEARNER::single_learner * base
void multipredict(expreplay< lp > &, LEARNER::single_learner &base, example &ec, size_t count, size_t step, polyprediction *pred, bool finalize_predictions)