|
| 1 | +import json |
1 | 2 | from multiprocessing.queues import Queue
|
| 3 | +import os |
2 | 4 | from typing import Any, Dict, List, Optional, Tuple, Union
|
3 | 5 |
|
4 | 6 | from ConfigSpace.configuration_space import Configuration
|
|
21 | 23 | )
|
22 | 24 | from autoPyTorch.evaluation.utils import DisableFileOutputParameters
|
23 | 25 | from autoPyTorch.pipeline.components.training.metrics.base import autoPyTorchMetric
|
| 26 | +from autoPyTorch.pipeline.tabular_classification import TabularClassificationPipeline |
24 | 27 | from autoPyTorch.utils.common import dict_repr, subsampler
|
25 | 28 | from autoPyTorch.utils.hyperparameter_search_space_update import HyperparameterSearchSpaceUpdates
|
26 | 29 |
|
@@ -193,6 +196,25 @@ def fit_predict_and_loss(self) -> None:
|
193 | 196 | additional_run_info = pipeline.get_additional_run_info() if hasattr(
|
194 | 197 | pipeline, 'get_additional_run_info') else {}
|
195 | 198 |
|
| 199 | + # add learning curve of configurations to additional_run_info |
| 200 | + if isinstance(pipeline, TabularClassificationPipeline): |
| 201 | + if hasattr(pipeline.named_steps['trainer'], 'run_summary'): |
| 202 | + run_summary = pipeline.named_steps['trainer'].run_summary |
| 203 | + split_types = ['train', 'val', 'test'] |
| 204 | + run_summary_dict = dict( |
| 205 | + run_summary={}, |
| 206 | + budget=self.budget, |
| 207 | + seed=self.seed, |
| 208 | + config_id=self.configuration.config_id, |
| 209 | + num_run=self.num_run |
| 210 | + ) |
| 211 | + for split_type in split_types: |
| 212 | + run_summary_dict['run_summary'][f'{split_type}_loss'] = run_summary.performance_tracker.get(f'{split_type}_loss', None) |
| 213 | + run_summary_dict['run_summary'][f'{split_type}_metrics'] = run_summary.performance_tracker.get(f'{split_type}_metrics', None) |
| 214 | + self.logger.debug(f"run_summary_dict {json.dumps(run_summary_dict)}") |
| 215 | + with open(os.path.join(self.backend.temporary_directory, 'run_summary.txt'), 'a') as file: |
| 216 | + file.write(f"{json.dumps(run_summary_dict)}\n") |
| 217 | + |
196 | 218 | status = StatusType.SUCCESS
|
197 | 219 |
|
198 | 220 | self.logger.debug("In train evaluator.fit_predict_and_loss, num_run: {} loss:{},"
|
|
0 commit comments