Browse Source

[MNT] filter learnware with infinite dist

tags/v0.3.2
Gene 2 years ago
parent
commit
ec5c46bc6c
1 changed files with 15 additions and 6 deletions
  1. +15
    -6
      learnware/market/easy/searcher.py

+ 15
- 6
learnware/market/easy/searcher.py View File

@@ -538,14 +538,20 @@ class EasyStatSearcher(BaseSearcher):
both lists are sorted by mmd dist
"""
rkme_list = [learnware.specification.get_stat_spec_by_name(self.stat_spec_type) for learnware in learnware_list]
mmd_dist_list = []
for rkme in rkme_list:
mmd_dist = rkme.dist(user_rkme)
mmd_dist_list.append(mmd_dist)
filtered_idx_list, mmd_dist_list = [], []
for idx in range(len(rkme_list)):
mmd_dist = rkme_list[idx].dist(user_rkme)
if np.isfinite(mmd_dist):
mmd_dist_list.append(mmd_dist)
filtered_idx_list.append(idx)
else:
logger.warning(
f"The distance between user_spec and learnware_spec (id: {learnware_list[idx].id}) is not finite, where distance is {mmd_dist}"
)

sorted_idx_list = sorted(range(len(learnware_list)), key=lambda k: mmd_dist_list[k])
sorted_idx_list = sorted(range(len(mmd_dist_list)), key=lambda k: mmd_dist_list[k])
sorted_dist_list = [mmd_dist_list[idx] for idx in sorted_idx_list]
sorted_learnware_list = [learnware_list[idx] for idx in sorted_idx_list]
sorted_learnware_list = [learnware_list[filtered_idx_list[idx]] for idx in sorted_idx_list]

return sorted_dist_list, sorted_learnware_list

@@ -561,6 +567,9 @@ class EasyStatSearcher(BaseSearcher):
raise KeyError("No supported stat specification is given in the user info")

user_rkme = user_info.stat_info[self.stat_spec_type]
if not np.isfinite(user_rkme.dist(user_rkme)):
raise ValueError("The distance between uploaded statistical specifications is not finite!")

learnware_list = self._filter_by_rkme_spec_metadata(learnware_list, user_rkme)
logger.info(f"After filter by rkme dimension, learnware_list length is {len(learnware_list)}")



Loading…
Cancel
Save