chassis
- class MuyGPyS.optimize.chassis.OptimizeFn(optimize_fn, make_obj_fn)[source]
Outer-loop optimization functor class.
MuyGPyS-compatible optimization functions are objects of this class. Creating a new outer-loop optimization function is as simple as instantiating a new
OptimizeFn
object.- Parameters:
optimize_fn – A Callable with the signature
(muygps, obj_fn, verbose=verbose, **kwargs) -> MuyGPS
.make_obj_fn – A Callable taking the following objects, in order:
loss_fn
,kernel_fn
,mean_fn
,var_fn
,scale_fn
,pairwise_diffs
,crosswise_diffs
batch_nn_targets
,batch_targets
batch_features
,loss_kwargs
.
- MuyGPyS.optimize.chassis.Bayes_optimize = <MuyGPyS.optimize.chassis.OptimizeFn object>
Optimize a
MuyGPS
model using Bayesian optimization.See the following example, where we have already created a
batch_indices
vector and abatch_nn_indices
matrix usingMuyGPyS.neighbors.NN_Wrapper
, acrosswise_diffs
matrix usingMuyGPyS.gp.tensors.crosswise_tensor()
andpairwise_diffs
usingMuyGPyS.gp.tensors.pairwise_tensor()
, and initialized aMuyGPS
modelmuygps
.Example
>>> from MuyGPyS.optimize import Bayes_optimize >>> muygps = Bayes_optimize( ... muygps, ... batch_targets, ... batch_nn_targets, ... crosswise_diffs, ... pairwise_diffs, ... train_responses, ... loss_fn=lool_fn, ... verbose=True, ... ) parameters to be optimized: ['nu'] bounds: [[0.1 5. ]] initial x0: [0.92898658] | iter | target | nu | ------------------------------------- | 1 | 1.826e+03 | 0.929 | | 2 | 2.359e+03 | 2.143 | | 3 | 1.953e+03 | 3.63 | | 4 | 614.4 | 0.1006 | | 5 | 2.309e+03 | 1.581 | | 6 | 1.707e+03 | 0.8191 | | 7 | 1.48e+03 | 5.0 | | 8 | 2.202e+03 | 2.83 | | 9 | 2.373e+03 | 1.883 | | 10 | 2.373e+03 | 1.996 | | 11 | 2.375e+03 | 1.938 | | 12 | 2.375e+03 | 1.938 | | 13 | 2.375e+03 | 1.938 | | 14 | 2.375e+03 | 1.938 | | 15 | 2.375e+03 | 1.938 | | 16 | 2.375e+03 | 1.938 | | 17 | 2.375e+03 | 1.938 | | 18 | 2.375e+03 | 1.945 | | 19 | 2.375e+03 | 1.927 | | 20 | 2.375e+03 | 1.95 | | 21 | 2.375e+03 | 1.926 | =====================================
- Parameters:
muygps – The model to be optimized.
batch_targets – Matrix of floats of shape
(batch_count, response_count)
whose rows give the expected response for each batch element.batch_nn_targets – Tensor of floats of shape
(batch_count, nn_count, response_count)
containing the expected response for each nearest neighbor of each batch element.crosswise_diffs – A tensor of shape
(batch_count, nn_count, feature_count)
whose last two dimensions list the difference between each feature of each batch element element and its nearest neighbors.pairwise_diffs – A tensor of shape
(batch_count, nn_count, nn_count, feature_count)
containing the(nn_count, nn_count, feature_count)
-shaped pairwise nearest neighbor difference tensors corresponding to each of the batch elements.loss_fn – The loss functor used to evaluate model performance.
loss_kwargs – A dictionary of additional keyword arguments to apply to the
LossFn
. Loss function specific.verbose – If True, print debug messages.
kwargs – Additional keyword arguments to be passed to the wrapper optimizer.
- Returns:
A new MuyGPs model whose specified hyperparameters have been optimized.
- MuyGPyS.optimize.chassis.L_BFGS_B_optimize = <MuyGPyS.optimize.chassis.OptimizeFn object>
Optimize a
MuyGPS
model using the L-BFGS-B algorithm.See the following example, where we have already created a
batch_indices
vector and abatch_nn_indices
matrix usingMuyGPyS.neighbors.NN_Wrapper
, acrosswise_diffs
matrix usingMuyGPyS.gp.tensors.crosswise_tensor()
andpairwise_diffs
usingMuyGPyS.gp.tensors.pairwise_tensor()
, and initialized aMuyGPS
modelmuygps
.Example
>>> from MuyGPyS.optimize import L_BFGS_B_optimize >>> muygps = L_BFGS_B_optimize( ... muygps, ... batch_targets, ... batch_nn_targets, ... crosswise_diffs, ... pairwise_diffs, ... train_responses, ... loss_fn=lool_fn, ... verbose=True, ... ) parameters to be optimized: ['nu'] bounds: [[0.1 1. ]] sampled x0: [0.8858425] optimizer results: fun: 0.4797763813693626 hess_inv: <1x1 LbfgsInvHessProduct with dtype=float64> jac: array([-3.06976666e-06]) message: b'CONVERGENCE: NORM_OF_PROJECTED_GRADIENT_<=_PGTOL' nfev: 16 nit: 5 njev: 8 status: 0 success: True x: array([0.39963594])
- Parameters:
muygps – The model to be optimized.
batch_targets – Matrix of floats of shape
(batch_count, response_count)
whose rows give the expected response for each batch element.batch_nn_targets – Tensor of floats of shape
(batch_count, nn_count, response_count)
containing the expected response for each nearest neighbor of each batch element.crosswise_diffs – A tensor of shape
(batch_count, nn_count, feature_count)
whose last two dimensions list the difference between each feature of each batch element element and its nearest neighbors.pairwise_diffs – A tensor of shape
(batch_count, nn_count, nn_count, feature_count)
containing the(nn_count, nn_count, feature_count)
-shaped pairwise nearest neighbor difference tensors corresponding to each of the batch elements.loss_fn – The loss functor used to evaluate model performance.
loss_kwargs – A dictionary of additional keyword arguments to apply to the
LossFn
. Loss function specific.verbose – If True, print debug messages.
kwargs – Additional keyword arguments to be passed to the wrapper optimizer.
- Returns:
A new MuyGPs model whose specified hyperparameters have been optimized.