"...git@developer.sourcefind.cn:tianlh/lightgbm-dcu.git" did not exist on "0a4d1908289ef8b8d5b64190d1e92bd987ccc9b0"
Commit 6f7669df authored by Guolin Ke's avatar Guolin Ke
Browse files

fix bug in save model

parent 53bae396
...@@ -254,11 +254,25 @@ inline static std::string ArrayToString(const std::vector<T>& arr, char delimite ...@@ -254,11 +254,25 @@ inline static std::string ArrayToString(const std::vector<T>& arr, char delimite
return str_buf.str(); return str_buf.str();
} }
template<typename T>
inline static std::string ArrayToString(const std::vector<T>& arr, size_t n, char delimiter) {
if (arr.empty() || n == 0) {
return std::string("");
}
std::stringstream str_buf;
str_buf << arr[0];
for (size_t i = 1; i < std::min(n, arr.size()); ++i) {
str_buf << delimiter;
str_buf << arr[i];
}
return str_buf.str();
}
template<typename T> template<typename T>
inline static std::vector<T> StringToArray(const std::string& str, char delimiter, size_t n) { inline static std::vector<T> StringToArray(const std::string& str, char delimiter, size_t n) {
std::vector<std::string> strs = Split(str.c_str(), delimiter); std::vector<std::string> strs = Split(str.c_str(), delimiter);
if (strs.size() != n) { if (strs.size() != n) {
Log::Fatal("StringToIntArray error, size doesn't match."); Log::Fatal("StringToArray error, size doesn't match.");
} }
std::vector<T> ret(n); std::vector<T> ret(n);
if (std::is_same<T, float>::value || std::is_same<T, double>::value) { if (std::is_same<T, float>::value || std::is_same<T, double>::value) {
......
...@@ -124,27 +124,27 @@ std::string Tree::ToString() { ...@@ -124,27 +124,27 @@ std::string Tree::ToString() {
std::stringstream ss; std::stringstream ss;
ss << "num_leaves=" << num_leaves_ << std::endl; ss << "num_leaves=" << num_leaves_ << std::endl;
ss << "split_feature=" ss << "split_feature="
<< Common::ArrayToString<int>(split_feature_real_, ' ') << std::endl; << Common::ArrayToString<int>(split_feature_real_, num_leaves_ - 1, ' ') << std::endl;
ss << "split_gain=" ss << "split_gain="
<< Common::ArrayToString<double>(split_gain_, ' ') << std::endl; << Common::ArrayToString<double>(split_gain_, num_leaves_ - 1, ' ') << std::endl;
ss << "threshold=" ss << "threshold="
<< Common::ArrayToString<double>(threshold_, ' ') << std::endl; << Common::ArrayToString<double>(threshold_, num_leaves_ - 1, ' ') << std::endl;
ss << "decision_type=" ss << "decision_type="
<< Common::ArrayToString<int>(Common::ArrayCast<int8_t, int>(decision_type_), ' ') << std::endl; << Common::ArrayToString<int>(Common::ArrayCast<int8_t, int>(decision_type_), num_leaves_ - 1, ' ') << std::endl;
ss << "left_child=" ss << "left_child="
<< Common::ArrayToString<int>(left_child_, ' ') << std::endl; << Common::ArrayToString<int>(left_child_, num_leaves_ - 1, ' ') << std::endl;
ss << "right_child=" ss << "right_child="
<< Common::ArrayToString<int>(right_child_, ' ') << std::endl; << Common::ArrayToString<int>(right_child_, num_leaves_ - 1, ' ') << std::endl;
ss << "leaf_parent=" ss << "leaf_parent="
<< Common::ArrayToString<int>(leaf_parent_, ' ') << std::endl; << Common::ArrayToString<int>(leaf_parent_, num_leaves_, ' ') << std::endl;
ss << "leaf_value=" ss << "leaf_value="
<< Common::ArrayToString<double>(leaf_value_, ' ') << std::endl; << Common::ArrayToString<double>(leaf_value_, num_leaves_, ' ') << std::endl;
ss << "leaf_count=" ss << "leaf_count="
<< Common::ArrayToString<data_size_t>(leaf_count_, ' ') << std::endl; << Common::ArrayToString<data_size_t>(leaf_count_, num_leaves_, ' ') << std::endl;
ss << "internal_value=" ss << "internal_value="
<< Common::ArrayToString<double>(internal_value_, ' ') << std::endl; << Common::ArrayToString<double>(internal_value_, num_leaves_ - 1, ' ') << std::endl;
ss << "internal_count=" ss << "internal_count="
<< Common::ArrayToString<data_size_t>(internal_count_, ' ') << std::endl; << Common::ArrayToString<data_size_t>(internal_count_, num_leaves_ - 1, ' ') << std::endl;
ss << std::endl; ss << std::endl;
return ss.str(); return ss.str();
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment