code: def BiLSTMEncoder(
      width: int, depth: int, dropout: float
  ) -> Model[List[Floats2d], List[Floats2d]]:
      """Encode context using bidirectonal LSTM layers. Requires PyTorch.
  
      width (int): The input and output width. These are required to be the same,
          to allow residual connections. This value will be determined by the
          width of the inputs. Recommended values are between 64 and 300.
      depth (int): The number of recurrent layers.
      dropout (float): Creates a Dropout layer on the outputs of each LSTM layer
          except the last layer. Set to 0 to disable this functionality.
      """
      if depth == 0:
          return noop()
      return with_padded(
          PyTorchLSTM(
              width, width, bi=True, depth=depth, dropout=dropout
          )
      )
  
file_path: spacy/spacy/ml/models/tok2vec.py
imports: from typing import List, Optional, Union, cast
  from thinc.api import HashEmbed, Maxout, Mish, Model, PyTorchLSTM, chain, clone, concatenate, expand_window, list2ragged, noop, ragged2list, residual, with_array, with_padded
  from thinc.types import Floats2d, Ints1d, Ints2d, Ragged
  from ...attrs import intify_attr
  from ...errors import Errors
  from ...ml import _character_embed
  from ...pipeline.tok2vec import Tok2VecListener
  from ...tokens import Doc
  from ...util import registry
  from ..featureextractor import FeatureExtractor
  from ..staticvectors import StaticVectors
label_desc: Use image node_id 9 for calling a global function with example usage: BiLSTMEncoder(width, depth, dropout) and returns: with_padded, noop