sig
  exception Optim_exception of exn
  val train :
    ?step:float ->
    ?tol:float ->
    ?epsabs:float ->
    ?report_trained_model:(iter:int ->
                           Gpr_interfaces.Sigs.Eval.Trained.t -> unit) ->
    ?report_gradient_norm:(iter:int -> float -> unit) ->
    ?kernel:Eval.Spec.Kernel.t ->
    ?sigma2:float ->
    ?inducing:Eval.Spec.Inducing.t ->
    ?n_rand_inducing:int ->
    ?learn_sigma2:bool ->
    ?hypers:Gpr_interfaces.Sigs.Deriv.Deriv.Spec.Hyper.t array ->
    inputs:Eval.Spec.Inputs.t ->
    targets:Lacaml.D.vec -> unit -> Gpr_interfaces.Sigs.Eval.Trained.t
end