


import numpy as np
from PIL import Image






def 							__lowercase       (			__lowerCAmelCase							:    Dict ,   __lowerCAmelCase							:    str ,   __lowerCAmelCase							:    Dict       ) ->    Union[str, Any]:
							a__					=					np.array(_lowercase       )
							if arr.shape[0] != arr.shape[1]:
														raise ValueError('The input array is not a square matrix'       )
							a__					=					0
							a__					=					0
							a__					=					0
							a__					=					0

							# compute the shape of the output matrix
							a__					=					(arr.shape[0] - size) // stride + 1
							# initialize the output matrix with zeros of shape maxpool_shape
							a__					=					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
																					a__					=					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
														a__					=					0
														a__					=					0

							return updated_arr






def 							__lowercase       (			__lowerCAmelCase							:    Tuple ,   __lowerCAmelCase							:    str ,   __lowerCAmelCase							:    Dict       ) ->    Optional[int]:
							a__					=					np.array(_lowercase       )
							if arr.shape[0] != arr.shape[1]:
														raise ValueError('The input array is not a square matrix'       )
							a__					=					0
							a__					=					0
							a__					=					0
							a__					=					0

							# compute the shape of the output matrix
							a__					=					(arr.shape[0] - size) // stride + 1
							# initialize the output matrix with zeros of shape avgpool_shape
							a__					=					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
																					a__					=					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
														a__					=					0
														a__					=					0

							return updated_arr


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

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

						# Loading the image
						snake_case							:	str					      =				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()








from .configuration_bert_masked import MaskedBertConfig
from .modeling_bert_masked import (
    MaskedBertForMultipleChoice,
    MaskedBertForQuestionAnswering,
    MaskedBertForSequenceClassification,
    MaskedBertForTokenClassification,
    MaskedBertModel,
)
from .modules import *




