

'''simple docstring'''



import numpy as np
from PIL import Image


def       snake_case   (	snake_case      : np.ndarray					,		snake_case      : int					,		snake_case      : int			) ->  np.ndarray:


    """simple docstring"""


    lowerCAmelCase 						=							np.array(snake_case			)
    if arr.shape[0] != arr.shape[1]:
        raise ValueError('The input array is not a square matrix'			)
    lowerCAmelCase 						=							0
    lowerCAmelCase 						=							0
    lowerCAmelCase 						=							0
    lowerCAmelCase 						=							0

    # compute the shape of the output matrix
    lowerCAmelCase 						=							(arr.shape[0] - size) // stride + 1
    # initialize the output matrix with zeros of shape maxpool_shape
    lowerCAmelCase 						=							np.zeros((maxpool_shape, maxpool_shape)			)

    while i < arr.shape[0]:
        if i + size > arr.shape[0]:
            # if the end of the matrix is reached, break
            break
        while j < arr.shape[1]:
            # if the end of the matrix is reached, break
            if j + size > arr.shape[1]:
                break
            # compute the maximum of the pooling matrix
            lowerCAmelCase 						=							np.max(arr[i : i + size, j : j + size]			)
            # shift the pooling matrix by stride of column pixels
            j += stride
            mat_j += 1

        # shift the pooling matrix by stride of row pixels
        i += stride
        mat_i += 1

        # reset the column index to 0
        lowerCAmelCase 						=							0
        lowerCAmelCase 						=							0

    return updated_arr


def       snake_case   (	snake_case      : np.ndarray					,		snake_case      : int					,		snake_case      : int			) ->  np.ndarray:


    """simple docstring"""


    lowerCAmelCase 						=							np.array(snake_case			)
    if arr.shape[0] != arr.shape[1]:
        raise ValueError('The input array is not a square matrix'			)
    lowerCAmelCase 						=							0
    lowerCAmelCase 						=							0
    lowerCAmelCase 						=							0
    lowerCAmelCase 						=							0

    # compute the shape of the output matrix
    lowerCAmelCase 						=							(arr.shape[0] - size) // stride + 1
    # initialize the output matrix with zeros of shape avgpool_shape
    lowerCAmelCase 						=							np.zeros((avgpool_shape, avgpool_shape)			)

    while i < arr.shape[0]:
        # if the end of the matrix is reached, break
        if i + size > arr.shape[0]:
            break
        while j < arr.shape[1]:
            # if the end of the matrix is reached, break
            if j + size > arr.shape[1]:
                break
            # compute the average of the pooling matrix
            lowerCAmelCase 						=							int(np.average(arr[i : i + size, j : j + size]			)			)
            # shift the pooling matrix by stride of column pixels
            j += stride
            mat_j += 1

        # shift the pooling matrix by stride of row pixels
        i += stride
        mat_i += 1
        # reset the column index to 0
        lowerCAmelCase 						=							0
        lowerCAmelCase 						=							0

    return updated_arr


# Main Function
if __name__ == "__main__":
     from doctest import testmod

     testmod(name="avgpooling", verbose=True)

     # Loading the image
     _UpperCamelCase						:  Tuple							       =				Image.open("path_to_image")

     # Converting the image to numpy array and maxpooling, displaying the result
     # Ensure that the image is a square matrix

     Image.fromarray(maxpooling(np.array(image), size=3, stride=2)).show()

     # Converting the image to numpy array and averagepooling, displaying the result
     # Ensure that the image is a square matrix

     Image.fromarray(avgpooling(np.array(image), size=3, stride=2)).show()








'''simple docstring'''



from ...configuration_utils import PretrainedConfig
from ...utils import logging


_UpperCamelCase						:  Optional[int]							       =				logging.get_logger(__name__)

_UpperCamelCase						:  Tuple							       =				{
    "google/canine-s": "https://huggingface.co/google/canine-s/resolve/main/config.json",
    # See all CANINE models at https://huggingface.co/models?filter=canine
}



class 				_snake_case					(   a_			):
  SCREAMING_SNAKE_CASE			:       List[Any]				=     '''canine'''

  def __init__(				self      , _SCREAMING_SNAKE_CASE=7_68      , _SCREAMING_SNAKE_CASE=12      , _SCREAMING_SNAKE_CASE=12      , _SCREAMING_SNAKE_CASE=30_72      , _SCREAMING_SNAKE_CASE="gelu"      , _SCREAMING_SNAKE_CASE=0.1      , _SCREAMING_SNAKE_CASE=0.1      , _SCREAMING_SNAKE_CASE=1_63_84      , _SCREAMING_SNAKE_CASE=16      , _SCREAMING_SNAKE_CASE=0.02      , _SCREAMING_SNAKE_CASE=1e-12      , _SCREAMING_SNAKE_CASE=0      , _SCREAMING_SNAKE_CASE=0Xe0_00      , _SCREAMING_SNAKE_CASE=0Xe0_01      , _SCREAMING_SNAKE_CASE=4      , _SCREAMING_SNAKE_CASE=4      , _SCREAMING_SNAKE_CASE=8      , _SCREAMING_SNAKE_CASE=1_63_84      , _SCREAMING_SNAKE_CASE=1_28      , **_SCREAMING_SNAKE_CASE      , ):





      '''simple docstring'''

      super().__init__(pad_token_id=_SCREAMING_SNAKE_CASE      , bos_token_id=_SCREAMING_SNAKE_CASE      , eos_token_id=_SCREAMING_SNAKE_CASE      , **_SCREAMING_SNAKE_CASE	)

      lowerCAmelCase 						=							max_position_embeddings
      lowerCAmelCase 						=							hidden_size
      lowerCAmelCase 						=							num_hidden_layers
      lowerCAmelCase 						=							num_attention_heads
      lowerCAmelCase 						=							intermediate_size
      lowerCAmelCase 						=							hidden_act
      lowerCAmelCase 						=							hidden_dropout_prob
      lowerCAmelCase 						=							attention_probs_dropout_prob
      lowerCAmelCase 						=							initializer_range
      lowerCAmelCase 						=							type_vocab_size
      lowerCAmelCase 						=							layer_norm_eps

      # Character config:
      lowerCAmelCase 						=							downsampling_rate
      lowerCAmelCase 						=							upsampling_kernel_size
      lowerCAmelCase 						=							num_hash_functions
      lowerCAmelCase 						=							num_hash_buckets
      lowerCAmelCase 						=							local_transformer_stride





