class_docstr: Gradient descent algorithm.
  
  Parameters
  ----------
  network : list, tuple or LayerConnection instance
      Network's architecture. There are a few ways
      to define it.
  
      - List of layers.
        For instance, ``[Input(2), Tanh(4), Relu(1)]``.
  
      - Constructed layers.
        For instance, ``Input(2) >> Tanh(4) >> Relu(1)``.
  
  regularizer : function or None
      Network's regularizer.
  
  loss : str or function
      Error/loss function. Defaults to ``mse``.
  
      - ``mae`` - Mean Absolute Error.
  
      - ``mse`` - Mean Squared Error.
  
      - ``rmse`` - Root Mean Squared Error.
  
      - ``msle`` - Mean Squared Logarithmic Error.
  
      - ``rmsle`` - Root Mean Squared Logarithmic Error.
  
      - ``categorical_crossentropy`` - Categorical cross entropy.
  
      - ``binary_crossentropy`` - Binary cross entropy.
  
      - ``binary_hinge`` - Binary hinge entropy.
  
      - ``categorical_hinge`` - Categorical hinge entropy.
  
      - Custom function which accepts two mandatory arguments.
        The first one is expected value and the second one is
        predicted value. Example:
  
      .. code-block:: python
  
          def custom_func(expected, predicted):
              return expected - predicted
  
  step : float, Variable
      Learning rate, defaults to ``0.1``.
  
  {BaseNetwork.show_epoch}
  
  {BaseNetwork.shuffle_data}
  
  {BaseNetwork.signals}
  
  {BaseNetwork.verbose}
  
  Attributes
  ----------
  {BaseNetwork.Attributes}
  
  Methods
  -------
  {BaseSkeleton.predict}
  
  train(X_train, y_train, X_test=None, y_test=None, epochs=100)
      Train network. You can control network's training procedure
      with ``epochs`` parameter. The ``X_test`` and ``y_test`` should
      be presented both in case network's validation required
      after each training epoch.
  
  {BaseSkeleton.fit}
code: def init_train_updates(self):
      raise NotImplementedError()
  
imports: from __future__ import division
  import time
  import numpy
  import tensorflow
  from neupy import layers
  from neupy.core.properties import FunctionWithOptionsProperty, ScalarVariableProperty, IntProperty, Property
  from neupy.utils import AttributeKeyDict, format_data, as_tuple, iters, tf_utils
  from neupy.algorithms.gd import objectives
  from neupy.exceptions import InvalidConnection
  from neupy.algorithms.base import BaseNetwork
label_desc: Use image node_id 2 for calling the BaseOptimizer obj's underlying member method code with example usage: obj.init_train_updates() without return types