80 auto temp = (*spot.node).predict<ArrayXb>(d);
81 v_float = temp.template cast<float>();
84 auto temp = (*spot.node).predict<ArrayXi>(d);
85 v_float = temp.template cast<float>();
87 v_float = (*spot.node).
template predict<ArrayXf>(d);
91 auto hashes =
hash(v_float);
92 for (
size_t i = 0; i < hashes.size(); ++i)
111 float threshold = 1e-8;
116 auto temp = (*spot.node).predict<ArrayXb>(d);
117 v_float = temp.template cast<float>();
120 auto temp = (*spot.node).predict<ArrayXi>(d);
121 v_float = temp.template cast<float>();
123 v_float = (*spot.node).
template predict<ArrayXf>(d);
126 vector<pair<size_t, string>> candidates;
127 vector<float> distances;
142 vector<string> hashes =
hash(v_float);
144 for (
const auto& h : hashes) {
149 for (
size_t i = 0; i < hashes.size(); ++i){
150 auto newCandidates = storage->
getList(hashes[i]);
153 for (
const auto& cand : newCandidates) {
154 float d = (v_float - cand).array().pow(2).mean();
155 if (std::isnan(d) || std::isinf(d))
161 candidates.push_back(make_pair(i, hashes[i]));
162 distances.push_back(d);
168 if (distances.size() > 0){
169 auto min_idx = std::distance(std::begin(distances),
170 std::min_element(std::begin(distances), std::end(distances)));
172 return candidates[min_idx];