class_docstr: Salience map from gradient L2 norm.
class_docstr_tok: ["Salience","map","from","gradient","L2","norm","."]
code: def find_fields(self, output_spec: Spec) -> list[str]:
      # Find TokenGradients fields
      supported_fields: list[str] = []
  
      # Check that these are aligned to Tokens fields
      for f in utils.find_spec_keys(output_spec, types.TokenGradients):
          tokens_field = cast(
              types.TokenGradients, output_spec[f]
          ).align
          is_valid_tokens = (
              tokens_field is not None
              and tokens_field in output_spec
              and isinstance(output_spec[tokens_field], types.Tokens)
          )
          if not is_valid_tokens:
              logging.info(
                  "Skipping %s. Invalid tokens field, %s",
                  str(f),
                  str(tokens_field),
              )
              continue
          supported_fields.append(f)
      return supported_fields
  
imports: from typing import cast, Optional
  from absl import logging
  from lit_nlp.api import components
  from lit_nlp.api import dataset
  from lit_nlp.api import dtypes
  from lit_nlp.api import model
  from lit_nlp.api import types
  from lit_nlp.components.citrus import utils
  from lit_nlp.lib import utils
  import numpy
label_desc: Use image node_id 1 for calling the GradientNorm obj's underlying member method code with example usage: obj.find_fields(output_spec) and returns: supported_fields