code: def __init__(
      self,
      embed_size: int,
      n_patches: int,
      token_dim: int,
      channel_dim: int,
      dropout: float = 0.0,
  ):
      super().__init__()
      self._input_shape = (n_patches, embed_size)
      self._output_shape = (n_patches, embed_size)
  
      self.mlp1 = MLP(
          in_features=n_patches, hidden_size=token_dim, dropout=dropout
      )
  
      self.mlp2 = MLP(
          in_features=embed_size,
          hidden_size=channel_dim,
          dropout=dropout,
      )
  
      self.layernorm1 = nn.LayerNorm(normalized_shape=embed_size)
      self.layernorm2 = nn.LayerNorm(normalized_shape=embed_size)
  
imports: from typing import Tuple, Union
  import torch
  import torch.nn
  from ludwig.utils.torch_utils import LudwigModule
label_desc: Use image node_id 1 to create a new MixerBlock object from inherited base classes: LudwigModule with example: obj = MixerBlock(embed_size, n_patches, token_dim, channel_dim, dropout)