class_docstr: Extends the Layer object to have trainable parameters,
  adding initializers and regularizers.
code: def to_string(self):
      out_str = Layer.to_string(self)
      # try to add trainable variable info to the string
      layer_variables = self.trainable_variables()
      if not layer_variables:
          return out_str
      # including name of parameters
      out_str += " \033[92m[Trainable]\033[0m "
      out_str += ", ".join(
          [
              v.name.split(":")[0][len(self.layer_scope().name) + 1 :]
              for v in layer_variables
          ]
      )
      # including number of parameters
      out_str += " ({})".format(self.num_trainable_params())
      return out_str
  
imports: from __future__ import absolute_import, print_function
  from abc import ABCMeta, abstractmethod
  import numpy
  import tensorflow
  from six import with_metaclass
  from niftynet.engine.application_variables import RESTORABLE
label_desc: Use image node_id 6 for calling the TrainableLayer obj's underlying member method code with example usage: obj.to_string() and returns: out_str, out_str