Browse Source

[FIX] fix a crucial bug in _calculate_intermediate_K_and_C

tags/v0.3.2
nju-xy 2 years ago
parent
commit
032dc4c5e9
4 changed files with 4 additions and 4 deletions
  1. +1
    -2
      examples/dataset_pfs_workflow/main.py
  2. +1
    -2
      learnware/market/easy/searcher.py
  3. +1
    -0
      learnware/specification/regular/table/rkme.py
  4. +1
    -0
      tests/test_learnware_client/test_check_learnware.py

+ 1
- 2
examples/dataset_pfs_workflow/main.py View File

@@ -76,8 +76,7 @@ class PFSDatasetWorkflow:
semantic_spec = semantic_specs[0]
semantic_spec["Name"]["Values"] = "learnware_%d" % (idx)
semantic_spec["Description"]["Values"] = "test_learnware_number_%d" % (idx)
x = easy_market.add_learnware(zip_path, semantic_spec)
print(x)
easy_market.add_learnware(zip_path, semantic_spec)

print("Total Item:", len(easy_market))
# curr_inds = easy_market._get_ids()


+ 1
- 2
learnware/market/easy/searcher.py View File

@@ -279,7 +279,6 @@ class EasyStatSearcher(BaseSearcher):
weight, obj = rkme_solve_qp(K, C)
weight = weight.double().to(user_rkme.device)
score = user_rkme.inner_prod(user_rkme) + 2 * obj

return weight.detach().cpu().numpy().reshape(-1), score

def _calculate_intermediate_K_and_C(
@@ -311,7 +310,7 @@ class EasyStatSearcher(BaseSearcher):
num = intermediate_K.shape[0] - 1
RKME_list = [learnware.specification.get_stat_spec_by_name(self.stat_spec_type) for learnware in learnware_list]
for i in range(intermediate_K.shape[0]):
intermediate_K[num, i] = RKME_list[-1].inner_prod(RKME_list[i])
intermediate_K[num, i] = intermediate_K[i, num] = RKME_list[-1].inner_prod(RKME_list[i])
intermediate_C[num, 0] = user_rkme.inner_prod(RKME_list[-1])
return intermediate_K, intermediate_C



+ 1
- 0
learnware/specification/regular/table/rkme.py View File

@@ -578,6 +578,7 @@ def rkme_solve_qp(K: np.ndarray, C: np.ndarray):
K = K.cpu().numpy()
if torch.is_tensor(C):
C = C.cpu().numpy()
C = C.reshape(-1)

n = K.shape[0]
P = np.array(K)


+ 1
- 0
tests/test_learnware_client/test_check_learnware.py View File

@@ -32,3 +32,4 @@ class TestCheckLearnware(unittest.TestCase):

if __name__ == "__main__":
unittest.main()


Loading…
Cancel
Save