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","."]
docstr: Args:
      x (Tensor):
          Feature Tensor. shape: ``[batch, frame, in_feature]``
  Returns:
      Tensor: Projected features. ``[batch, frame, out_feature]``.
docstr_tok: ["Args",":","x","(","Tensor",")",":","Feature","Tensor",".","shape",":","``","[","batch",",","frame",",","in_feature","]","``","Returns",":","Tensor",":","Projected","features",".","``","[","batch",",","frame",",","out_feature","]","``","."]
code: def forward(self, x):
      """
      Args:
          x (Tensor):
              Feature Tensor. shape: ``[batch, frame, in_feature]``
      Returns:
          Tensor: Projected features. ``[batch, frame, out_feature]``.
      """
      x = self.layer_norm(x)
      x = self.projection(x)
      x = self.dropout(x)
      return x
  
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 2 for calling the FeatureProjection obj's underlying member method code with example usage: obj.forward(x) and returns: x