class_docstr: Positional embedding which is placed at the beginning of Transformer.
  
  Args:
      embed_dim (int): Feature dimension of the input Tensor.
      kernel_size (int): The number of frames to be use.
      groups (int): The number of groups in feature dimensions.
class_docstr_tok: ["Positional","embedding","which","is","placed","at","the","beginning","of","Transformer",".","Args",":","embed_dim","(","int",")",":","Feature","dimension","of","the","input","Tensor",".","kernel_size","(","int",")",":","The","number","of","frames","to","be","use",".","groups","(","int",")",":","The","number","of","groups","in","feature","dimensions","."]
code: def __init__(
      self,
      embed_dim: int,
      kernel_size: int,
      groups: int,
  ):
      super().__init__()
      self.embed_dim = embed_dim
      self.kernel_size = kernel_size
      self.conv = nn.Conv1d(
          in_channels=embed_dim,
          out_channels=embed_dim,
          kernel_size=kernel_size,
          padding=kernel_size // 2,
          groups=groups,
      )
  
      self.conv = nn.utils.parametrizations.weight_norm(
          self.conv, name="weight", dim=2
      )
      self.num_remove: int = 1 if kernel_size % 2 == 0 else 0
  
imports: import logging
  from typing import List, Optional, Tuple
  import torch
  from torch import nn, Tensor
  from torch.nn import Module, Parameter
  from .wavlm_attention import WavLMSelfAttention
label_desc: Use image node_id 1 to create a new ConvolutionalPositionalEmbedding object from inherited base classes: Module with example: obj = ConvolutionalPositionalEmbedding(embed_dim, kernel_size, groups)