Spaces:
Build error
Build error
deliver optimal result
Browse files
app.py
CHANGED
|
@@ -438,7 +438,7 @@ class ExplainerCheckboxGroup(Component):
|
|
| 438 |
for exp in self.explainer_objs:
|
| 439 |
val = exp.explainer_name in DEFAULT_EXPLAINER
|
| 440 |
checkbox_group_info = self.update_check(checkbox_group_info, exp.default_exp_id, val)
|
| 441 |
-
if hasattr(exp, "optimal_exp_id"):
|
| 442 |
checkbox_group_info = self.update_check(checkbox_group_info, exp.optimal_exp_id, False)
|
| 443 |
return checkboxes + bttns + [checkbox_group_info]
|
| 444 |
|
|
@@ -478,7 +478,7 @@ class ExplainerCheckbox(Component):
|
|
| 478 |
self.experiment = experiment
|
| 479 |
self.gallery = gallery
|
| 480 |
|
| 481 |
-
self.
|
| 482 |
self.default_exp_id = self.get_explainer_id_by_name(explainer_name)
|
| 483 |
self.obj_metric = self.get_metric_id_by_name(OBJECTIVE_METRIC)
|
| 484 |
|
|
@@ -499,13 +499,19 @@ class ExplainerCheckbox(Component):
|
|
| 499 |
checkbox_group_info = self.groups.update_check(checkbox_group_info, self.default_exp_id, evt._data['value'])
|
| 500 |
return checkbox_group_info
|
| 501 |
|
| 502 |
-
def optimal_on_select(self, evt: gr.EventData, checkbox_group_info,
|
| 503 |
-
if
|
|
|
|
| 504 |
checkbox_group_info = self.groups.update_check(checkbox_group_info, optimal_exp_id, evt._data['value'])
|
| 505 |
else:
|
| 506 |
-
raise ValueError("Optimal
|
| 507 |
return checkbox_group_info
|
| 508 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 509 |
def show(self):
|
| 510 |
val = self.explainer_name in DEFAULT_EXPLAINER
|
| 511 |
with gr.Accordion(self.explainer_name, open=val):
|
|
@@ -514,12 +520,12 @@ class ExplainerCheckbox(Component):
|
|
| 514 |
self.opt_check = gr.Checkbox(label="Optimized Parameter (Not Optimal)", interactive=False)
|
| 515 |
|
| 516 |
self.default_check.select(self.default_on_select, self.groups.info, self.groups.info)
|
| 517 |
-
self.opt_check.select(self.optimal_on_select, [self.groups.info, self.
|
| 518 |
|
| 519 |
self.bttn = gr.Button(value="Optimize", size="sm", variant="primary")
|
| 520 |
|
| 521 |
@spaces.GPU
|
| 522 |
-
def optimize(
|
| 523 |
data_id = self.gallery.selected_index
|
| 524 |
|
| 525 |
opt_output = self.experiment.optimize(
|
|
@@ -537,18 +543,23 @@ class ExplainerCheckbox(Component):
|
|
| 537 |
opt_postprocessor_id = pp_id
|
| 538 |
break
|
| 539 |
|
| 540 |
-
|
| 541 |
opt_output.explainer.model = self.experiment.model
|
| 542 |
-
self.experiment.manager._explainers.append(opt_output.explainer)
|
| 543 |
-
self.experiment.manager._explainer_ids.append(
|
| 544 |
-
|
| 545 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 546 |
checkbox = gr.update(label="Optimized Parameter (Optimal)", interactive=True)
|
| 547 |
bttn = gr.update(value="Optimized", variant="secondary")
|
| 548 |
|
| 549 |
-
return [
|
| 550 |
|
| 551 |
-
self.bttn.click(optimize, inputs=[self.
|
|
|
|
| 552 |
|
| 553 |
|
| 554 |
class ExpRes(Component):
|
|
|
|
| 438 |
for exp in self.explainer_objs:
|
| 439 |
val = exp.explainer_name in DEFAULT_EXPLAINER
|
| 440 |
checkbox_group_info = self.update_check(checkbox_group_info, exp.default_exp_id, val)
|
| 441 |
+
if hasattr(exp, "optimal_exp_id"): # TO BE FIXED : exp.optimal_exp_id is gr.State Object
|
| 442 |
checkbox_group_info = self.update_check(checkbox_group_info, exp.optimal_exp_id, False)
|
| 443 |
return checkboxes + bttns + [checkbox_group_info]
|
| 444 |
|
|
|
|
| 478 |
self.experiment = experiment
|
| 479 |
self.gallery = gallery
|
| 480 |
|
| 481 |
+
self.opt_res = gr.State(None)
|
| 482 |
self.default_exp_id = self.get_explainer_id_by_name(explainer_name)
|
| 483 |
self.obj_metric = self.get_metric_id_by_name(OBJECTIVE_METRIC)
|
| 484 |
|
|
|
|
| 499 |
checkbox_group_info = self.groups.update_check(checkbox_group_info, self.default_exp_id, evt._data['value'])
|
| 500 |
return checkbox_group_info
|
| 501 |
|
| 502 |
+
def optimal_on_select(self, evt: gr.EventData, checkbox_group_info, opt_res):
|
| 503 |
+
if opt_res is not None:
|
| 504 |
+
optimal_exp_id = opt_res['id']
|
| 505 |
checkbox_group_info = self.groups.update_check(checkbox_group_info, optimal_exp_id, evt._data['value'])
|
| 506 |
else:
|
| 507 |
+
raise ValueError("Optimal result is not found.")
|
| 508 |
return checkbox_group_info
|
| 509 |
|
| 510 |
+
def update_exp(self, exp_res):
|
| 511 |
+
self.experiment.manager._explainers.append(exp_res['explainer'])
|
| 512 |
+
self.experiment.manager._explainer_ids.append(exp_res['id'])
|
| 513 |
+
|
| 514 |
+
|
| 515 |
def show(self):
|
| 516 |
val = self.explainer_name in DEFAULT_EXPLAINER
|
| 517 |
with gr.Accordion(self.explainer_name, open=val):
|
|
|
|
| 520 |
self.opt_check = gr.Checkbox(label="Optimized Parameter (Not Optimal)", interactive=False)
|
| 521 |
|
| 522 |
self.default_check.select(self.default_on_select, self.groups.info, self.groups.info)
|
| 523 |
+
self.opt_check.select(self.optimal_on_select, [self.groups.info, self.opt_res], self.groups.info)
|
| 524 |
|
| 525 |
self.bttn = gr.Button(value="Optimize", size="sm", variant="primary")
|
| 526 |
|
| 527 |
@spaces.GPU
|
| 528 |
+
def optimize(checkbox_group_info):
|
| 529 |
data_id = self.gallery.selected_index
|
| 530 |
|
| 531 |
opt_output = self.experiment.optimize(
|
|
|
|
| 543 |
opt_postprocessor_id = pp_id
|
| 544 |
break
|
| 545 |
|
| 546 |
+
opt_exp_id = max([x['id'] for x in checkbox_group_info]) + 1
|
| 547 |
opt_output.explainer.model = self.experiment.model
|
| 548 |
+
# self.experiment.manager._explainers.append(opt_output.explainer)
|
| 549 |
+
# self.experiment.manager._explainer_ids.append(opt_exp_id)
|
| 550 |
+
|
| 551 |
+
opt_res = {
|
| 552 |
+
'id': opt_exp_id,
|
| 553 |
+
'explainer': opt_output.explainer,
|
| 554 |
+
}
|
| 555 |
+
self.groups.insert_check(checkbox_group_info, self.explainer_name, opt_exp_id, opt_postprocessor_id)
|
| 556 |
checkbox = gr.update(label="Optimized Parameter (Optimal)", interactive=True)
|
| 557 |
bttn = gr.update(value="Optimized", variant="secondary")
|
| 558 |
|
| 559 |
+
return [opt_res, checkbox_group_info, checkbox, bttn]
|
| 560 |
|
| 561 |
+
self.bttn.click(optimize, inputs=[self.groups.info], outputs=[self.opt_res, self.groups.info, self.opt_check, self.bttn], queue=True, concurrency_limit=1)
|
| 562 |
+
self.opt_res.change(self.update_exp, self.opt_res)
|
| 563 |
|
| 564 |
|
| 565 |
class ExpRes(Component):
|