class_docstr: Layer that connects FeatureExtractor and Encoder
  
  Projects features to encoder dimension.
  
  Args:
      in_features (int): Input feature dim.
      out_features (int): Output feature dim.
      dropout (float): Dropout probability.
class_docstr_tok: ["Layer","that","connects","FeatureExtractor","and","Encoder","Projects","features","to","encoder","dimension",".","Args",":","in_features","(","int",")",":","Input","feature","dim",".","out_features","(","int",")",":","Output","feature","dim",".","dropout","(","float",")",":","Dropout","probability","."]
code: def __init__(
      self,
      in_features: int,
      out_features: int,
      dropout: float,
  ):
      super().__init__()
      self.layer_norm = nn.LayerNorm(in_features)
      self.projection = nn.Linear(
          in_features,
          out_features,
      )
      self.dropout = nn.Dropout(dropout)
  
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 FeatureProjection object from inherited base classes: Module with example: obj = FeatureProjection(in_features, out_features, dropout)