MCPcopy Create free account
hub / github.com/antmachineintelligence/mtgbmcode / LoadInitialScore

Method LoadInitialScore

src/io/metadata.cpp:392–436  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

390}
391
392void Metadata::LoadInitialScore(const char* initscore_file) {
393 num_init_score_ = 0;
394 std::string init_score_filename(initscore_file);
395 if (init_score_filename.size() <= 0) {
396 init_score_filename = std::string(data_filename_);
397 // default weight file name
398 init_score_filename.append(".init");
399 }
400 TextReader<size_t> reader(init_score_filename.c_str(), false);
401 reader.ReadAllLines();
402 if (reader.Lines().empty()) {
403 return;
404 }
405 Log::Info("Loading initial scores...");
406
407 // use first line to count number class
408 int num_class = static_cast<int>(Common::Split(reader.Lines()[0].c_str(), '\t').size());
409 data_size_t num_line = static_cast<data_size_t>(reader.Lines().size());
410 num_init_score_ = static_cast<int64_t>(num_line) * num_class;
411
412 init_score_ = std::vector<double>(num_init_score_);
413 if (num_class == 1) {
414 #pragma omp parallel for schedule(static)
415 for (data_size_t i = 0; i < num_line; ++i) {
416 double tmp = 0.0f;
417 Common::Atof(reader.Lines()[i].c_str(), &tmp);
418 init_score_[i] = Common::AvoidInf(static_cast<double>(tmp));
419 }
420 } else {
421 std::vector<std::string> oneline_init_score;
422 #pragma omp parallel for schedule(static)
423 for (data_size_t i = 0; i < num_line; ++i) {
424 double tmp = 0.0f;
425 oneline_init_score = Common::Split(reader.Lines()[i].c_str(), '\t');
426 if (static_cast<int>(oneline_init_score.size()) != num_class) {
427 Log::Fatal("Invalid initial score file. Redundant or insufficient columns");
428 }
429 for (int k = 0; k < num_class; ++k) {
430 Common::Atof(oneline_init_score[k].c_str(), &tmp);
431 init_score_[static_cast<size_t>(k) * num_line + i] = Common::AvoidInf(static_cast<double>(tmp));
432 }
433 }
434 }
435 init_score_load_from_file_ = true;
436}
437
438void Metadata::LoadQueryBoundaries() {
439 num_queries_ = 0;

Callers

nothing calls this directly

Calls 7

appendMethod · 0.80
SplitFunction · 0.50
AtofFunction · 0.50
AvoidInfFunction · 0.50
sizeMethod · 0.45
ReadAllLinesMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected