class_docstr: MTV model.
docstr: Merges tokens from each view along the channel axis.
docstr_tok: ["Merges","tokens","from","each","view","along","the","channel","axis","."]
code: def _merge_views_along_channel_axis(
      self, tokens: Sequence[jnp.ndarray]
  ) -> jnp.ndarray:
      """Merges tokens from each view along the channel axis."""
      max_temporal_dim = max(self.input_token_temporal_dims)
      xs = []
      for idx, x in enumerate(tokens):
          bs, time, n, c = x.shape
          x = x.reshape(
              bs,
              self.input_token_temporal_dims[idx],
              (time * n) // self.input_token_temporal_dims[idx],
              c,
          )
          if self.keep_spatiotemporal_features:
              xs.append(
                  jnp.tile(x, (1, max_temporal_dim // x.shape[1], 1, 1))
              )
          else:
              x = self._extract_encoder_output(x, axis=2)
              xs.append(
                  jnp.tile(x, (1, max_temporal_dim // x.shape[1], 1))
              )
      return jnp.concatenate(xs, axis=-1)
  
imports: import functools
  from typing import Any, List, Sequence, Tuple, Union
  import flax.linen
  import jax
  import jax.numpy
  import ml_collections
  from scenic.model_lib.layers import attention_layers
  from scenic.model_lib.layers import nn_layers
  from scenic.projects.baselines import vit
  from scenic.projects.mtv import model_utils
  from scenic.projects.vivit import model
  from scenic.train_lib import train_utils
label_desc: Use image node_id 8 for calling the MTV obj's underlying member method code with example usage: obj._merge_views_along_channel_axis(tokens) and returns: jnp