avoid collecting duplicate parameters in Booster::cfg_

This commit is contained in:
Vadim Khotilovich 2016-04-25 22:08:53 -05:00
parent b3c9e6a0db
commit 0527b17c9d

View File

@ -32,7 +32,16 @@ class Booster {
}
inline void SetParam(const std::string& name, const std::string& val) {
cfg_.push_back(std::make_pair(name, val));
auto it = std::find_if(cfg_.begin(), cfg_.end(),
[&name](decltype(*cfg_.begin()) &x) {
return x.first == name;
}
);
if (it == cfg_.end()) {
cfg_.push_back(std::make_pair(name, val));
} else {
(*it).second = val;
}
if (configured_) {
learner_->Configure(cfg_);
}
@ -277,7 +286,7 @@ int XGDMatrixCreateFromCSC(const bst_ulong* col_ptr,
RowBatch::Entry(static_cast<bst_uint>(i), data[j]),
tid);
}
}
}
mat.info.num_row = mat.row_ptr_.size() - 1;
mat.info.num_col = static_cast<uint64_t>(ncol);
mat.info.num_nonzero = nelem;