class_docstr: Base class for modules.
  
  Args:
      device (string): Device name
          (<span style="color:#00C000"><b>default</b></span>: inherit value of parent module).
      l2_regularization (float >= 0.0): Scalar controlling L2 regularization
          (<span style="color:#00C000"><b>default</b></span>: inherit value of parent module).
      name (string): <span style="color:#0000C0"><b>internal use</b></span>.
code: def register_summary(self, *, label, name):
      # label
      if not isinstance(label, str):
          raise TensorforceError.type(
              name="Module.register_summary",
              argument="label",
              dtype=type(label),
          )
      # name
      if not isinstance(name, (str, tuple, list)):
          raise TensorforceError.type(
              name="Module.register_summary",
              argument="name",
              dtype=type(name),
          )
      if not isinstance(name, str):
          name = name[0]
      if name in self.summary_steps:
          raise TensorforceError.value(
              name="Module.register_summary",
              argument="name",
              hint="already exists",
          )
  
      if self.root.summaries == "all" or label in self.root.summaries:
          self.summary_steps[name] = self.variable(
              name=(name + "-summary-step"),
              spec=TensorSpec(type="int"),
              initializer=-1,
              is_trainable=False,
              is_saved=False,
          )
  
imports: import functools
  import json
  import os
  import re
  import numpy
  import tensorflow
  from tensorforce import TensorforceError, util
  import tensorforce.core
  from tensorforce.core import SignatureDict, TensorSpec, tf_util, VariableDict
label_desc: Use image node_id 21 for calling the Module obj's underlying member method code with example usage: obj.register_summary() without return types