|
|
|
@@ -9,7 +9,7 @@ import learnware |
|
|
|
from benchmarks.utils import build_learnware, build_specification, evaluate, Recorder |
|
|
|
from learnware.client import LearnwareClient |
|
|
|
from learnware.market import instantiate_learnware_market, BaseUserInfo |
|
|
|
from learnware.reuse import AveragingReuser |
|
|
|
from learnware.reuse import JobSelectorReuser, AveragingReuser |
|
|
|
from learnware.specification import generate_rkme_image_spec |
|
|
|
|
|
|
|
PROXY_IP = "172.24.57.111" |
|
|
|
@@ -36,7 +36,7 @@ class CifarDatasetWorkflow: |
|
|
|
|
|
|
|
print("Total Item:", len(market)) |
|
|
|
|
|
|
|
def evaluate(self, user_size=100, market_id=None): |
|
|
|
def evaluate_unlabeled(self, user_size=100, market_id=None): |
|
|
|
learnware.init() |
|
|
|
|
|
|
|
market_id = "dataset_cifar_workflow" if market_id is None else market_id |
|
|
|
@@ -73,41 +73,22 @@ class CifarDatasetWorkflow: |
|
|
|
loss, acc = evaluate(item, dataset) |
|
|
|
loss_list.append(loss) |
|
|
|
acc_list.append(acc) |
|
|
|
|
|
|
|
best_acc_record.append(max(acc_list)) |
|
|
|
best_loss_record.append(min(loss_list)) |
|
|
|
print("Best Accuracy: {:.3f}% ({:.3f}%), Best Loss: {:.3f} ({:.3f})".format( |
|
|
|
max(acc_list), mean(best_acc_record), min(loss_list), mean(best_loss_record))) |
|
|
|
recorder.record("Best", accuracy=max(acc_list), loss=min(loss_list)) |
|
|
|
|
|
|
|
mean_acc_record.append(mean(acc_list)) |
|
|
|
mean_loss_record.append(mean(loss_list)) |
|
|
|
print("Avg Accuracy: {:.3f}% ({:.3f}%), Avg Loss: {:.3f} ({:.3f})".format( |
|
|
|
mean(acc_list), mean(mean_acc_record), mean(loss_list), mean(mean_loss_record))) |
|
|
|
recorder.record("Average", accuracy=mean(acc_list), loss=mean(loss_list)) |
|
|
|
|
|
|
|
top_1_loss, top_1_acc = evaluate(single_result[0].learnware, dataset) |
|
|
|
top_1_acc_record.append(top_1_acc) |
|
|
|
top_1_loss_record.append(top_1_loss) |
|
|
|
print( |
|
|
|
"Top-1\tAccuracy: {:.3f}% ({:.3f}%), Loss: {:.3f}({:.3f})".format( |
|
|
|
top_1_acc, mean(top_1_acc_record), top_1_loss, mean(top_1_loss_record)) |
|
|
|
) |
|
|
|
recorder.record("Top-1", accuracy=top_1_acc, loss=top_1_loss) |
|
|
|
recorder.record("Top-1 Learnware", accuracy=top_1_acc, loss=top_1_loss) |
|
|
|
|
|
|
|
reuse_ensemble = AveragingReuser(learnware_list=multiple_result[0].learnwares, mode="vote_by_prob") |
|
|
|
# reuse_ensemble = AveragingReuser(learnware_list=[item.learnware for item in single_result[:3]], mode="vote_by_prob") |
|
|
|
ensemble_loss, ensemble_acc = evaluate(reuse_ensemble, dataset) |
|
|
|
ensemble_acc_record.append(ensemble_acc) |
|
|
|
ensemble_loss_record.append(ensemble_loss) |
|
|
|
print( |
|
|
|
"Averaging Reuse\tAccuracy: {:.3f}% ({:.3f}%), Loss: {:.3f} ({:.3f})".format( |
|
|
|
ensemble_acc, mean(ensemble_acc_record), ensemble_loss, mean(ensemble_loss_record)) |
|
|
|
) |
|
|
|
recorder.record("Voting Reuse", accuracy=ensemble_acc, loss=ensemble_loss) |
|
|
|
|
|
|
|
print(recorder.latest()) |
|
|
|
print(recorder.accumulated()) |
|
|
|
reuse_job_selector = JobSelectorReuser(learnware_list=multiple_result[0].learnwares, use_herding=False) |
|
|
|
job_loss, job_acc = evaluate(reuse_job_selector, dataset) |
|
|
|
recorder.record("Job Selector", accuracy=job_acc, loss=job_loss) |
|
|
|
|
|
|
|
print(recorder.summary()) |
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
|