20 | module BayesianOptimization
22 | import Control.Monad.Reader
24 | import public BayesianOptimization.Acquisition as BayesianOptimization
31 | data TagStream : Type -> Type where
32 | (::) : a -> Inf (Tag (TagStream a)) -> TagStream a
36 | take : (n : Nat) -> TagStream a -> Tag $
Vect n a
38 | take (S k) (x :: xs) = pure (x :: !(take k !xs))
42 | iterate : (a -> Tag a) -> a -> Tag $
TagStream a
45 | pure (x' :: iterate f x')
54 | step : (objective : forall n . Tensor (n :: features) F64 -> Tag $
Tensor (n :: targets) F64) ->
55 | (probabilisticModel : ProbabilisticModel features targets marginal model) =>
56 | (train : Dataset features targets -> model -> Tag $
model) ->
57 | (tactic : ReaderT (DataModel {probabilisticModel} model) Tag (Tensor (1 :: features) F64)) ->
58 | DataModel {probabilisticModel} model ->
59 | Tag $
DataModel {probabilisticModel} model
60 | step objective train tactic env = do
61 | newPoint <- runReaderT env tactic
62 | dataset <- tag $
concat env.dataset $
MkDataset newPoint !(objective newPoint)
63 | pure $
MkDataModel !(train dataset env.model) dataset