161 auto lrq = scoped_calloc_or_throw<LRQstate>();
162 std::vector<std::string> lrq_names;
164 new_options.add(
make_option(
"lrq", lrq_names).keep().help(
"use low rank quadratic features"))
165 .add(
make_option(
"lrqdropout", lrq->dropout).keep().help(
"use dropout training for low rank quadratic features"));
176 new (&lrq->lrpairs) std::set<std::string>(lrq_names.begin(), lrq_names.end());
178 lrq->initial_seed = lrq->seed = all.
random_seed | 8675309;
182 all.
trace_message <<
"creating low rank quadratic features for pairs: ";
187 for (std::string
const& i : lrq->lrpairs)
191 if ((i.length() < 3) || !
valid_int(i.c_str() + 2))
192 THROW(
"error, low-rank quadratic features must involve two sets and a rank.");
198 unsigned int k = atoi(i.c_str() + 2);
200 lrq->lrindices[(int)i[0]] =
true;
201 lrq->lrindices[(int)i[1]] =
true;
203 maxk = std::max(k, k);
209 all.
wpp = all.
wpp * (uint64_t)(1 + maxk);
base_learner * make_base(learner< T, E > &base)
virtual void add_and_parse(const option_group_definition &group)=0
std::string spoof_hex_encoded_namespaces(const std::string &arg)
bool valid_int(const char *s)
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
void reset_seed(LRQstate &lrq)
typed_option< T > make_option(std::string name, T &location)
void set_end_pass(void(*f)(T &))
LEARNER::base_learner * setup_base(options_i &options, vw &all)