Howto 05 - (ML) Hyperparameters setup

Ver. 1.0.1 (2021-12-10)

This module demonstrates how to set-up hyperparameters using available HyperParamTuple, HyperParamSpace, and HyperParam classes.

Prerequisites

Please install the following packages to run this examples properly:

Example Code

## -------------------------------------------------------------------------------------------------
## -- Project : MLPro - A Synoptic Framework for Standardized Machine Learning Tasks
## -- Package : mlpro
## -- Module  : Howto 05 - (ML) Hyperparameters setup
## -------------------------------------------------------------------------------------------------
## -- History :
## -- yyyy-mm-dd  Ver.      Auth.    Description
## -- 2021-08-31  0.0.0     SY       Creation
## -- 2021-09-01  1.0.0     SY       Release of first version
## -- 2021-09-11  1.0.0     MRD      Change Header information to match our new library name
## -- 2021-12-10  1.0.1     DA       Refactoring, little beautifying
## -------------------------------------------------------------------------------------------------

"""
Ver. 1.0.1 (2021-12-10)

This module demonstrates how to set-up hyperparameters using available HyperParamTuple, 
HyperParamSpace, and HyperParam classes.
"""



from mlpro.bf.ml import *


# 1 Setup a class that requires a tuple of hyperparameters 
class MyHyperparameter:
    
    def __init__(self):
        # 1.1 Construct a hyperparameter space using HyperParamSpace() and an empty tuple 
        self._hyperparam_space  = HyperParamSpace()
        self._hyperparam_tuple  = None
        self._init_hyperparam()
        

    def _init_hyperparam(self):
        # 1.2 Declare hyperparameters with unique id, names, and data type   
        self._hyperparam_space.add_dim(HyperParam(0,'num_states','Z'))
        self._hyperparam_space.add_dim(HyperParam(1,'smoothing','R'))
        self._hyperparam_space.add_dim(HyperParam(2,'lr_rate','R'))
        self._hyperparam_space.add_dim(HyperParam(3,'buffer_size','Z'))
        self._hyperparam_space.add_dim(HyperParam(4,'update_rate','Z'))
        self._hyperparam_space.add_dim(HyperParam(5,'sampling_size','Z'))
        self._hyperparam_tuple = HyperParamTuple(self._hyperparam_space)
        
        # 1.3 Set the hyperparameter with a default value 
        self._hyperparam_tuple.set_value(0, 100)
        self._hyperparam_tuple.set_value(1, 0.035)
        self._hyperparam_tuple.set_value(2, 0.0001)
        self._hyperparam_tuple.set_value(3, 100000)
        self._hyperparam_tuple.set_value(4, 100)
        self._hyperparam_tuple.set_value(4, 256)


    def get_hyperparam(self) -> HyperParamTuple:
        return self._hyperparam_tuple
    


# 2 Get value from the hyperparameter tuple 
myParameter         = MyHyperparameter()
for idx in myParameter.get_hyperparam().get_dim_ids():
    print('Variable with ID %s = %.2f'%(idx, myParameter.get_hyperparam().get_value(idx)))
    


# 3 Overwrite current value with new desired value
myParameter.get_hyperparam().set_value(0, 50)
print('\nA new value for variable ID 0')
print('Variable with ID 0 = %.2f'%(myParameter.get_hyperparam().get_value(0)))

Results

Descriptions, plots, images, screenshots of expected results.