class_docstr: ### Naive up-sampling
  
  This up-samples by repeating
docstr: * `x` is the tensor with embeddings before down-sampling
  * `x_short` is the tensor of higher density (to be up-sampled) representations
code: def forward(self, x: torch.Tensor, x_short: torch.Tensor):
      """
      * `x` is the tensor with embeddings before down-sampling
      * `x_short` is the tensor of higher density (to be up-sampled) representations
      """
      # Repeat across the sequence dimension
      expanded = torch.repeat_interleave(x_short, self.k, dim=0)
      # Truncate the extra embeddings at the end
      expanded = expanded[: x.shape[0]]
  
      #
      return expanded
  
imports: from typing import List
  import torch
  from torch import nn
  from labml_helpers.module import Module
  from labml_nn.transformers import MultiHeadAttention, TransformerLayer
  from labml_nn.transformers.feed_forward import FeedForward
  from labml_nn.transformers.utils import subsequent_mask
label_desc: Use image node_id 2 for calling the NaiveUpSampling obj's underlying member method code with example usage: obj.forward(x, x_short) and returns: expanded