code: def check_configs(self):
      if (
          self.config["self-repair-scale"] < 0.0
          or self.config["self-repair-scale"] > 1.0
      ):
          raise RuntimeError(
              "self-repair-scale has invalid value {0}".format(
                  self.config["self-repair-scale"]
              )
          )
      if self.config["target-rms"] < 0.0:
          raise RuntimeError(
              "target-rms has invalid value {0}".format(
                  self.config["target-rms"]
              )
          )
      if self.config["learning-rate-factor"] <= 0.0:
          raise RuntimeError(
              "learning-rate-factor has invalid value {0}".format(
                  self.config["learning-rate-factor"]
              )
          )
      for conf in [
          "value-dim",
          "key-dim",
          "num-left-inputs",
          "num-right-inputs",
      ]:
          if self.config[conf] < 0:
              raise RuntimeError(
                  "{0} has invalid value {1}".format(
                      conf, self.config[conf]
                  )
              )
      if self.config["key-scale"] == 0.0:
          self.config["key-scale"] = 1.0 / math.sqrt(
              self.config["key-dim"]
          )
  
file_path: espnet/egs2/yoloxochitl_mixtec/asr1/steps/libs/nnet3/xconfig/attention.py
imports: from __future__ import print_function
  from __future__ import division
  import math
  import re
  import sys
  from libs.nnet3.xconfig.basic_layers import XconfigLayerBase
label_desc: Use image node_id 3 for calling the XconfigAttentionLayer obj's underlying member method code with example usage: obj.check_configs() without return types