Hyperparameter search module for tensorflow.js (sequential) models.
The following parameters are autotuned: lossFunction, optimizer algorithm, batchSize and epochs
import { TensorflowlModelAutotuner } from '@piximi/autotuner';
Initialize the autotuner by specifying metrics, a dataset and the number of categories.
var autotuner = new TensorflowlModelAutotuner(['accuracy'], dataset, numberOfCategories);
// create some uncompiled sequential tensorflow model
const testModel = await createModel();
const parameters = { lossfunction: [LossFunction.categoricalCrossentropy], optimizerAlgorithm: [tensorflow.train.adadelta()], batchSize: [10], epochs: [5,10] };
autotuner.addModel('testModel', testModel, parameters);
Specify the optimization algorithm: the hyperparameters can be tuned by either doing bayesian optimization or by doing a simple grid search.
autotuner.bayesianOptimization();
autotuner.gridSearchOptimizytion();
The ojective function of the optimization can be specified (either 'error' or 'accuracy'):
autotuner.gridSearchOptimizytion('accuracy');
The acquisition function of the optimization can be specified. Either expected improvement (i.e. 'ei') or upper confidence bound (i.e. 'ucb'):
autotuner.gridSearchOptimizytion('accuracy', 'ei');
Evaluating a model can be done using cross validation:
autotuner.gridSearchOptimizytion('accuracy', 'ei', true);
When doing bayesian optimization the maximum number of domain points to be evaluated can be specified as an optional parameter:
autotuner.bayesianOptimization('accuracy', 'ei', true, 0.8);
In the example above the optimizytion stops after 80% of the domain ponits have been evaluated. By default this value is set to 0.75.
The best hyperparameters found in the optimization run can be evaluated on the test set. Specify the objective and wheter or not to use cross validation.
autotuner.evaluateBestParameter('error', true);
An example usage can be found here:
tets/runExampleAutotuner.ts
Pull and initialize:
git clone https://github.com/piximi/autotuner.git
cd autotuner
npm install
To run tests:
npm run test
npm run runExampleAutotuner
To compile the code and check for type errors:
npm run build