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):
|