code: def build_hash_embed_cnn_tok2vec(
      *,
      width: int,
      depth: int,
      embed_size: int,
      window_size: int,
      maxout_pieces: int,
      subword_features: bool,
      pretrained_vectors: Optional[bool],
  ) -> Model[List[Doc], List[Floats2d]]:
      """Build spaCy's 'standard' tok2vec layer, which uses hash embedding
      with subword features and a CNN with layer-normalized maxout.
  
      width (int): The width of the input and output. These are required to be the
          same, so that residual connections can be used. Recommended values are
          96, 128 or 300.
      depth (int): The number of convolutional layers to use. Recommended values
          are between 2 and 8.
      window_size (int): The number of tokens on either side to concatenate during
          the convolutions. The receptive field of the CNN will be
          depth * window_size * 2 + 1, so a 4-layer network with window_size of
          2 will be sensitive to 17 words at a time. Recommended value is 1.
      embed_size (int): The number of rows in the hash embedding tables. This can
          be surprisingly small, due to the use of the hash embeddings. Recommended
          values are between 2000 and 10000.
      maxout_pieces (int): The number of pieces to use in the maxout non-linearity.
          If 1, the Mish non-linearity is used instead. Recommended values are 1-3.
      subword_features (bool): Whether to also embed subword features, specifically
          the prefix, suffix and word shape. This is recommended for alphabetic
          languages like English, but not if single-character tokens are used for
          a language such as Chinese.
      pretrained_vectors (bool): Whether to also use static vectors.
      """
      if subword_features:
          attrs = ["NORM", "PREFIX", "SUFFIX", "SHAPE"]
          row_sizes = [
              embed_size,
              embed_size // 2,
              embed_size // 2,
              embed_size // 2,
          ]
      else:
          attrs = ["NORM"]
          row_sizes = [embed_size]
      return build_Tok2Vec_model(
          embed=MultiHashEmbed(
              width=width,
              rows=row_sizes,
              attrs=attrs,
              include_static_vectors=bool(pretrained_vectors),
          ),
          encode=MaxoutWindowEncoder(
              width=width,
              depth=depth,
              window_size=window_size,
              maxout_pieces=maxout_pieces,
          ),
      )
  
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 3 for calling a global function with example usage: build_hash_embed_cnn_tok2vec() and returns: build_Tok2Vec_model