Better error message about loading pickled model. (#5236)
Print the link to new tutorial.
This commit is contained in:
parent
b513dcd352
commit
43974939f4
@ -657,8 +657,19 @@ class LearnerImpl : public Learner {
|
|||||||
std::string header;
|
std::string header;
|
||||||
header.resize(serialisation_header_.size());
|
header.resize(serialisation_header_.size());
|
||||||
CHECK_EQ(fp.Read(&header[0], header.size()), serialisation_header_.size());
|
CHECK_EQ(fp.Read(&header[0], header.size()), serialisation_header_.size());
|
||||||
CHECK_EQ(header, serialisation_header_);
|
// Avoid printing the content in loaded header, which might be random binary code.
|
||||||
|
CHECK(header == serialisation_header_) // NOLINT
|
||||||
|
<< R"doc(
|
||||||
|
|
||||||
|
If you are loading a serialized model (like pickle in Python) generated by older XGBoost,
|
||||||
|
please export the model by calling `Booster.save_model` from that version first, then load
|
||||||
|
it back in current version. See:
|
||||||
|
|
||||||
|
https://xgboost.readthedocs.io/en/latest/tutorials/saving_model.html
|
||||||
|
|
||||||
|
for more details about differences between saving model and serializing.
|
||||||
|
|
||||||
|
)doc";
|
||||||
int64_t json_offset {-1};
|
int64_t json_offset {-1};
|
||||||
CHECK_EQ(fp.Read(&json_offset, sizeof(json_offset)), sizeof(json_offset));
|
CHECK_EQ(fp.Read(&json_offset, sizeof(json_offset)), sizeof(json_offset));
|
||||||
CHECK_GT(json_offset, 0);
|
CHECK_GT(json_offset, 0);
|
||||||
@ -668,8 +679,6 @@ class LearnerImpl : public Learner {
|
|||||||
common::MemoryFixSizeBuffer binary_buf(&buffer[0], json_offset);
|
common::MemoryFixSizeBuffer binary_buf(&buffer[0], json_offset);
|
||||||
this->LoadModel(&binary_buf);
|
this->LoadModel(&binary_buf);
|
||||||
|
|
||||||
common::MemoryFixSizeBuffer json_buf {&buffer[0] + json_offset,
|
|
||||||
buffer.size() - json_offset};
|
|
||||||
auto config = Json::Load({buffer.c_str() + json_offset, buffer.size() - json_offset});
|
auto config = Json::Load({buffer.c_str() + json_offset, buffer.size() - json_offset});
|
||||||
this->LoadConfig(config);
|
this->LoadConfig(config);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user