code: def evaluate_message_shapes(
      messages: List[Message],
      expected_shape: List[tuple],
      expected_sequence_vec: List[List[float]],
      expected_cls_vec: List[List[float]],
  ) -> None:
      for index in range(len(messages)):
          (computed_sequence_vec, computed_sentence_vec) = messages[
              index
          ].get_dense_features(TEXT, [])
          if computed_sequence_vec:
              computed_sequence_vec = computed_sequence_vec.features
          if computed_sentence_vec:
              computed_sentence_vec = computed_sentence_vec.features
  
          assert (
              computed_sequence_vec.shape[0]
              == expected_shape[index][0] - 1
          )
          assert (
              computed_sequence_vec.shape[1] == expected_shape[index][1]
          )
          assert computed_sentence_vec.shape[0] == 1
          assert (
              computed_sentence_vec.shape[1] == expected_shape[index][1]
          )
  
          # Look at the value of first dimension for a few starting timesteps
          assert np.allclose(
              computed_sequence_vec[
                  : len(expected_sequence_vec[index]), 0
              ].astype(float),
              expected_sequence_vec[index],
              atol=1e-4,
          )
  
          # Look at the first value of first five dimensions
          assert np.allclose(
              computed_sentence_vec[0][:5].astype(float),
              expected_cls_vec[index],
              atol=1e-4,
          )
  
          (intent_sequence_vec, intent_sentence_vec) = messages[
              index
          ].get_dense_features(INTENT, [])
          if intent_sequence_vec:
              intent_sequence_vec = intent_sequence_vec.features
          if intent_sentence_vec:
              intent_sentence_vec = intent_sentence_vec.features
  
          assert intent_sequence_vec is None
          assert intent_sentence_vec is None
  
imports: import os
  from typing import Text, List, Dict, Tuple, Any, Callable
  import numpy
  import pytest
  import logging
  from _pytest.monkeypatch import MonkeyPatch
  from _pytest.logging import LogCaptureFixture
  from rasa.engine.graph import ExecutionContext
  from rasa.engine.storage.storage import ModelStorage
  from rasa.engine.storage.resource import Resource
  from rasa.nlu.constants import TOKENS_NAMES, NUMBER_OF_SUB_TOKENS
  from rasa.nlu.tokenizers.whitespace_tokenizer import WhitespaceTokenizer
  from rasa.shared.nlu.training_data.training_data import TrainingData
  from rasa.shared.nlu.training_data.message import Message
  from rasa.nlu.featurizers.dense_featurizer.lm_featurizer import LanguageModelFeaturizer
  from rasa.shared.nlu.constants import TEXT, INTENT
  from rasa.nlu.tokenizers.tokenizer import Token
label_desc: Use image node_id 1 for calling the TestShapeValuesTrainAndProcess obj's underlying member method code with example usage: obj.evaluate_message_shapes(messages, expected_shape, expected_sequence_vec, expected_cls_vec) without return types