code: def from_config(
      cls, config: Config, tensorizers: Dict[str, Tensorizer]
  ):
      channels = [ConsoleChannel()]
      if config.TEMP_DUMP_PREDICTIONS:
          channels.append(
              MaskedCompositionalSeq2SeqFileChannel(
                  [Stage.TEST],
                  config.output_path,
                  tensorizers,
                  config.accept_flat_intents_slots,
              )
          )
      return cls(
          channels,
          config.log_gradient,
          tensorizers,
          config.accept_flat_intents_slots,
          config.model_select_metric_key,
          config.select_length_beam,
          config.ref_frame_accuracy,
          config.ref_model_num_param,
          config.param_importance,
      )
  
imports: from collections import defaultdict
  from typing import Dict, List
  import numpy
  from pytext.common.constants import Stage
  from pytext.data.tensorizers import Tensorizer
  from pytext.metric_reporters.channel import ConsoleChannel
  from pytext.metric_reporters.compositional_metric_reporter import CompositionalMetricReporter
  from pytext.metric_reporters.seq2seq_compositional import CompositionalSeq2SeqFileChannel, Seq2SeqCompositionalMetricReporter
  from pytext.metrics.intent_slot_metrics import FramePredictionPair
  from pytext.metrics.mask_metrics import compute_masked_metrics, compute_nas_masked_metrics
  from .compositional_utils import extract_beam_subtrees, filter_invalid_beams
label_desc: Use image node_id 2 for calling the NASMaskedSeq2SeqCompositionalMetricReporter obj's underlying member method code with example usage: obj.from_config(cls, config, tensorizers) and returns: cls