read hyperopt results from pickle or json

This commit is contained in:
Matthias 2021-05-12 06:06:30 +02:00
parent 06bf1aa274
commit 3cbe40875d

View File

@ -31,15 +31,27 @@ class HyperoptTools():
else: else:
return any(s in config['spaces'] for s in [space, 'all', 'default']) return any(s in config['spaces'] for s in [space, 'all', 'default'])
@staticmethod
def _read_results_pickle(results_file: Path) -> List:
"""
Read hyperopt results from pickle file
LEGACY method - new files are written as json and cannot be read with this method.
"""
from joblib import load
logger.info(f"Reading pickled epochs from '{results_file}'")
data = load(results_file)
return data
@staticmethod @staticmethod
def _read_results(results_file: Path) -> List: def _read_results(results_file: Path) -> List:
""" """
Read hyperopt results from file Read hyperopt results from file
""" """
from joblib import load import rapidjson
logger.info(f"Reading epochs from '{results_file}'")
logger.info("Reading epochs from '%s'", results_file) with results_file.open('r') as f:
data = load(results_file) data = [rapidjson.loads(line) for line in f]
return data return data
@staticmethod @staticmethod
@ -49,7 +61,10 @@ class HyperoptTools():
""" """
epochs: List = [] epochs: List = []
if results_file.is_file() and results_file.stat().st_size > 0: if results_file.is_file() and results_file.stat().st_size > 0:
epochs = HyperoptTools._read_results(results_file) if results_file.suffix == '.pickle':
epochs = HyperoptTools._read_results_pickle(results_file)
else:
epochs = HyperoptTools._read_results(results_file)
# Detection of some old format, without 'is_best' field saved # Detection of some old format, without 'is_best' field saved
if epochs[0].get('is_best') is None: if epochs[0].get('is_best') is None:
raise OperationalException( raise OperationalException(