36 template <
class T,
class E>
45 using fn = void (*)(
void* data);
64 bool finalize_predictions);
83 using fn = void (*)(
void*,
io_buf&,
bool read,
bool text);
91 using fn = void (*)(
vw&,
void* data,
void* ex);
105 std::cout << std::endl;
112 ex.
ft_offset +=
static_cast<uint32_t
>(increment * i);
117 for (
auto ec : ec_seq) ec->ft_offset +=
static_cast<uint32_t
>(increment * i);
123 ex.
ft_offset -=
static_cast<uint32_t
>(increment * i);
128 for (
auto ec : ec_seq)
130 assert(ec->ft_offset >= increment * i);
131 ec->ft_offset -=
static_cast<uint32_t
>(increment * i);
135 template <
class T,
class E>
160 inline void learn(E& ec,
size_t i = 0)
162 assert((is_multiline && std::is_same<multi_ex, E>::value) ||
163 (!is_multiline && std::is_same<example, E>::value));
171 assert((is_multiline && std::is_same<multi_ex, E>::value) ||
172 (!is_multiline && std::is_same<example, E>::value));
180 assert((is_multiline && std::is_same<multi_ex, E>::value) ||
181 (!is_multiline && std::is_same<example, E>::value));
185 for (
size_t c = 0;
c < count;
c++)
188 if (finalize_predictions)
191 pred[
c].
scalar = ec.partial_prediction;
201 learn_fd.
multipredict_f(learn_fd.
data, *learn_fd.
base, (
void*)&ec, count, increment, pred, finalize_predictions);
224 assert((is_multiline && std::is_same<multi_ex, E>::value) ||
225 (!is_multiline && std::is_same<example, E>::value));
239 sensitivity_fd.
data = learn_fd.
data;
254 if (save_load_fd.
base)
268 if (finisher_fd.
data)
272 learner_data.~shared_ptr<
void>();
273 if (finisher_fd.
base)
276 free(finisher_fd.
base);
283 if (end_pass_fd.
base)
291 end_examples_fd.
func(end_examples_fd.
data);
292 if (end_examples_fd.
base)
309 finish_example_fd.
data = learn_fd.
data;
314 static learner<T, E>&
init_learner(T* dat, L* base,
void (*
learn)(T&, L&, E&),
void (*
predict)(T&, L&, E&),
size_t ws,
360 ret.
learn_fd.multipredict_f =
nullptr;
368 template <
class T,
class E,
class L>
379 template <
class T,
class E,
class L>
391 template <
class T,
class E,
class L>
398 template <
class T,
class E,
class L>
408 template <
class T,
class E,
class L>
419 template <
class T,
class E,
class L>
429 template <
class T,
class E,
class L>
436 template <
class T,
class E,
class L>
449 template <
class T,
class E,
class L>
461 template <
class T,
class E>
467 template <
class T,
class E>
472 THROW(
"Tried to use a singleline reduction as a multiline reduction");
475 template <
class T,
class E>
480 THROW(
"Tried to use a multiline reduction as a singleline reduction");
483 template <
bool is_learn>
486 std::vector<uint64_t> saved_offsets;
487 for (
auto ec : examples)
489 saved_offsets.push_back(ec->ft_offset);
490 ec->ft_offset = offset;
494 base.
learn(examples,
id);
498 for (
size_t i = 0; i < examples.size(); i++) examples[i]->ft_offset = saved_offsets[i];
void set_multipredict(void(*u)(T &, L &, E &, size_t, size_t, polyprediction *, bool))
void finish_example(vw &all, E &ec)
void save_load(io_buf &io, const bool read, const bool text)
void set_init_driver(void(*f)(T &))
void set_update(void(*u)(T &data, L &base, E &))
void predict(E &ec, size_t i=0)
void increment_offset(multi_ex &ec_seq, const size_t increment, const size_t i)
void set_learn(void(*u)(T &, L &, E &))
void generic_driver(ready_examples_queue &examples, context_type &context)
void multiline_learn_or_predict(multi_learner &base, multi_ex &examples, const uint64_t offset, const uint32_t id=0)
func_data end_examples_fd
learner< T, E > & init_cost_sensitive_learner(free_ptr< T > &dat, L *base, void(*learn)(T &, L &, E &), void(*predict)(T &, L &, E &), parser *p, size_t ws, prediction_type::prediction_type_t pred_type=prediction_type::multiclass)
void(*)(void *, io_buf &, bool read, bool text) fn
base_learner * make_base(learner< T, E > &base)
void set_predict(void(*u)(T &, L &, E &))
void set_save_load(void(*sl)(T &, io_buf &, bool, bool))
save_load_data save_load_fd
float(*)(void *data, base_learner &base, example &ex) fn
void(*)(void *data, base_learner &base, void *ex, size_t count, size_t step, polyprediction *pred, bool finalize_predictions) multi_fn
float recur_sensitivity(void *, base_learner &base, example &ec)
std::unique_ptr< T, free_fn > free_ptr
single_learner * as_singleline(learner< T, E > *l)
void set_finish_example(void(*f)(vw &all, T &, E &))
learner< T, E > & init_learner(L *base, void(*learn)(T &, L &, E &), void(*predict)(T &, L &, E &))
void(*)(vw &, void *data, void *ex) fn
void(*)(void *data, base_learner &base, void *ex) fn
void(*)(vw &, void *, void *) end_fptr_type
void finish_example(vw &all, example &ec)
float noop_sensitivity(void *, base_learner &, example &)
void generic_driver_onethread(vw &all)
float sensitivity(example &ec, size_t i=0)
finish_example_data finish_example_fd
std::vector< example * > multi_ex
sensitivity_data sensitivity_fd
void set_sensitivity(float(*u)(T &data, base_learner &base, example &))
static learner< T, E > & init_learner(T *dat, L *base, void(*learn)(T &, L &, E &), void(*predict)(T &, L &, E &), size_t ws, prediction_type::prediction_type_t pred_type)
void set_end_pass(void(*f)(T &))
void(*)(void *) finish_fptr_type
void set_finish(void(*f)(T &))
func_data tuple_dbf(void *data, base_learner *base, void(*func)(void *))
prediction_type::prediction_type_t pred_type
learner< T, E > & init_multiclass_learner(free_ptr< T > &dat, L *base, void(*learn)(T &, L &, E &), void(*predict)(T &, L &, E &), parser *p, size_t ws, prediction_type::prediction_type_t pred_type=prediction_type::multiclass)
void multipredict(E &ec, size_t lo, size_t count, polyprediction *pred, bool finalize_predictions)
void noop_sl(void *, io_buf &, bool, bool)
std::shared_ptr< void > learner_data
void predict(bfgs &b, base_learner &, example &ec)
void update(E &ec, size_t i=0)
void learn(E &ec, size_t i=0)
void learn(bfgs &b, base_learner &base, example &ec)
void decrement_offset(multi_ex &ec_seq, const size_t increment, const size_t i)
multi_learner * as_multiline(learner< T, E > *l)
const char * to_string(prediction_type_t prediction_type)
void set_end_examples(void(*f)(T &))
learner< char, char > base_learner
void return_simple_example(vw &all, void *, example &ec)