class_docstr: This implementation of L-BFGS relies on a user-provided line
  search function (state.lineSearch). If this function is not
  provided, then a simple learningRate is used to produce fixed
  size steps. Fixed size steps are much less costly than line
  searches, and can be useful for stochastic problems.
  The learning rate is used even when a line search is provided.
  This is also useful for large-scale stochastic problems, where
  opfunc is a noisy approximation of f(x). In that case, the learning
  rate allows a reduction of confidence in the step size.
  
  :param max_iter Maximum number of iterations allowed
  :param max_eval Maximum number of function evaluations
  :param tolfun Termination tolerance on the first-order optimality
  :param tolx Termination tol on progress in terms of func/param changes
  :param ncorrection
  :param learningrate
  :param verbose
  :param linesearch A line search function
  :param linesearch_options If no line search provided, then a fixed step size is used
  >>> lbfgs = LBFGS()
  creating: createLBFGS
code: def __init__(
      self,
      max_iter=20,
      max_eval=DOUBLEMAX,
      tolfun=1e-5,
      tolx=1e-9,
      ncorrection=100,
      learningrate=1.0,
      verbose=False,
      linesearch=None,
      linesearch_options=None,
  ):
      from bigdl.optim.optimizer import LBFGS as BLBFGS
  
      self.optimizer = BLBFGS(
          max_iter,
          max_eval,
          tolfun,
          tolx,
          ncorrection,
          learningrate,
          verbose,
          linesearch,
          linesearch_options,
          bigdl_type="float",
      )
  
imports: from abc import ABC, abstractmethod
  from bigdl.util.common import DOUBLEMAX
  from zoo.orca.learn.optimizers.schedule import Scheduler
label_desc: Use image node_id 1 to create a new LBFGS object from inherited base classes: Optimizer with example: obj = LBFGS(max_iter, max_eval, tolfun, tolx, ncorrection, learningrate, verbose, linesearch, linesearch_options)