class_docstr: Levenberg-Marquardt algorithm is a variation of the Newton's method.
  It minimizes MSE error. The algorithm approximates Hessian matrix using
  dot product between two jacobian matrices.
  
  Notes
  -----
  - Method requires all training data during propagation, which means
    it cannot be trained with mini-batches.
  
  - Network minimizes only Mean Squared Error (MSE) loss function.
  
  - Efficient for small training datasets, because it
    computes gradient per each sample separately.
  
  - Efficient for small-sized networks.
  
  Parameters
  ----------
  {BaseOptimizer.network}
  
  mu : float
      Control inversion for J.T * J matrix, defaults to ``0.1``.
  
  mu_update_factor : float
      Factor to decrease the mu if error was reduced after last update,
      otherwise increase mu by the same factor. Defaults to ``1.2``
  
  error : {{``mse``}}
      Levenberg-Marquardt works only for quadratic functions.
      Defaults to ``mse``.
  
  {BaseOptimizer.show_epoch}
  
  {BaseOptimizer.shuffle_data}
  
  {BaseOptimizer.signals}
  
  {BaseOptimizer.verbose}
  
  Attributes
  ----------
  {BaseOptimizer.Attributes}
  
  Methods
  -------
  {BaseOptimizer.Methods}
  
  Examples
  --------
  >>> import numpy as np
  >>> from neupy import algorithms
  >>> from neupy.layers import *
  >>>
  >>> x_train = np.array([[1, 2], [3, 4]])
  >>> y_train = np.array([[1], [0]])
  >>>
  >>> network = Input(2) >> Sigmoid(3) >> Sigmoid(1)
  >>> optimizer = algorithms.LevenbergMarquardt(network)
  >>> optimizer.train(x_train, y_train)
  
  See Also
  --------
  :network:`BaseOptimizer` : BaseOptimizer algorithm.
class_docstr_tok: ["Levenberg-Marquardt","algorithm","is","a","variation","of","the","Newton","'s","method",".","It","minimizes","MSE","error",".","The","algorithm","approximates","Hessian","matrix","using","dot","product","between","two","jacobian","matrices",".","Notes","--","--","-","-","Method","requires","all","training","data","during","propagation",",","which","means","it","can","not","be","trained","with","mini-batches",".","-","Network","minimizes","only","Mean","Squared","Error","(","MSE",")","loss","function",".","-","Efficient","for","small","training","datasets",",","because","it","computes","gradient","per","each","sample","separately",".","-","Efficient","for","small-sized","networks",".","Parameters","--","--","--","--","--","{","BaseOptimizer.network","}","mu",":","float","Control","inversion","for","J.T","*","J","matrix",",","defaults","to","``","0.1","``",".","mu_update_factor",":","float","Factor","to","decrease","the","mu","if","error","was","reduced","after","last","update",",","otherwise","increase","mu","by","the","same","factor",".","Defaults","to","``","1.2","``","error",":","{","{","``","mse","``","}","}","Levenberg-Marquardt","works","only","for","quadratic","functions",".","Defaults","to","``","mse","``",".","{","BaseOptimizer.show_epoch","}","{","BaseOptimizer.shuffle_data","}","{","BaseOptimizer.signals","}","{","BaseOptimizer.verbose","}","Attributes","--","--","--","--","--","{","BaseOptimizer.Attributes","}","Methods","--","--","--","-","{","BaseOptimizer.Methods","}","Examples","--","--","--","--",">",">",">","import","numpy","as","np",">",">",">","from","neupy","import","algorithms",">",">",">","from","neupy.layers","import","*",">",">",">",">",">",">","x_train","=","np.array","(","[","[","1",",","2","]",",","[","3",",","4","]","]",")",">",">",">","y_train","=","np.array","(","[","[","1","]",",","[","0","]","]",")",">",">",">",">",">",">","network","=","Input","(","2",")",">",">","Sigmoid","(","3",")",">",">","Sigmoid","(","1",")",">",">",">","optimizer","=","algorithms.LevenbergMarquardt","(","network",")",">",">",">","optimizer.train","(","x_train",",","y_train",")","See","Also","--","--","--","--",":","network",":","`","BaseOptimizer","`",":","BaseOptimizer","algorithm","."]
code: def one_training_update(self, X_train, y_train):
      if self.errors.train:
          last_error = self.errors.train[-1]
          self.variables.last_error.load(
              last_error, tensorflow_session()
          )
  
      return super(LevenbergMarquardt, self).one_training_update(
          X_train, y_train
      )
  
file_path: neupy/neupy/algorithms/gd/lev_marq.py
imports: import numpy
  import tensorflow
  from neupy.utils import tensorflow_session, flatten, function_name_scope, make_single_vector
  from neupy.core.properties import BoundedProperty, ChoiceProperty, WithdrawProperty
  from neupy.algorithms import BaseOptimizer
  from neupy.algorithms.gd import objectives
  from neupy.utils.tf_utils import setup_parameter_updates
label_desc: Use image node_id 3 for calling the LevenbergMarquardt obj's underlying member method code with example usage: obj.one_training_update(X_train, y_train) and returns: super