class_docstr: base class for classfication 
code: def l2_loss(self, tvars=None):
      _l2_loss = 0.0
      weight_decay = self.config["solver"]["optimizer"].get(
          "weight_decay", None
      )
      if weight_decay:
          logging.info(f"add L2 Loss with decay: {weight_decay}")
          with tf.name_scope("l2_loss"):
              tvars = tvars if tvars else tf.trainable_variables()
              tvars = [v for v in tvars if "bias" not in v.name]
              _l2_loss = weight_decay * tf.add_n(
                  [tf.nn.l2_loss(v) for v in tvars]
              )
              summary_lib.scalar("l2_loss", _l2_loss)
      return _l2_loss
  
imports: import os
  import re
  import functools
  import collections
  from absl import logging
  import delta.compat
  from tensorflow.python import debug
  from tensorflow.python.estimator.canned import metric_keys
  from tensorboard.plugins.pr_curve import summary
  from delta import utils
  from delta.utils.hparam import HParams
  from delta.utils import metrics
  from delta.utils import summary
  from delta.utils.register import registers
  from delta.utils.solver.base_solver import ABCEstimatorSolver
label_desc: Use image node_id 4 for calling the EstimatorSolver obj's underlying member method code with example usage: obj.l2_loss(tvars) and returns: _l2_loss