sig
  type typ = {
    mutable epochs : float;
    mutable batch : Owl_neural_optimise.Batch.typ;
    mutable gradient : Owl_neural_optimise.Gradient.typ;
    mutable loss : Owl_neural_optimise.Loss.typ;
    mutable learning_rate : Owl_neural_optimise.Learning_Rate.typ;
    mutable regularisation : Owl_neural_optimise.Regularisation.typ;
    mutable momentum : Owl_neural_optimise.Momentum.typ;
    mutable clipping : Owl_neural_optimise.Clipping.typ;
    mutable checkpoint : float;
    mutable verbosity : bool;
  }
  val default : unit -> Owl_neural_optimise.Params.typ
  val config :
    ?batch:Owl_neural_optimise.Batch.typ ->
    ?gradient:Owl_neural_optimise.Gradient.typ ->
    ?loss:Owl_neural_optimise.Loss.typ ->
    ?learning_rate:Owl_neural_optimise.Learning_Rate.typ ->
    ?regularisation:Owl_neural_optimise.Regularisation.typ ->
    ?momentum:Owl_neural_optimise.Momentum.typ ->
    ?clipping:Owl_neural_optimise.Clipping.typ ->
    ?checkpoint:float ->
    ?verbosity:bool -> float -> Owl_neural_optimise.Params.typ
  val to_string : Owl_neural_optimise.Params.typ -> string
end