Creates a new max pooling layer.
        :param name: name for the layer.
        :param kernel_size: tuple containing the size of the kernel (Width, Height)
        :param stride_size: tuple containing the size of the stride (Width, Height)
        :param padding: Type of padding. Available values are: ('SAME', 'VALID')
        :param input_layer_name: name of the input layer for this layer. If None, it will take the last added layer of
        the network.

def new_max_pool(self, name:str, kernel_size: tuple, stride_size: tuple, padding='SAME',
                     input_layer_name: str=None):
        """
        Creates a new max pooling layer.
        :param name: name for the layer.
        :param kernel_size: tuple containing the size of the kernel (Width, Height)
        :param stride_size: tuple containing the size of the stride (Width, Height)
        :param padding: Type of padding. Available values are: ('SAME', 'VALID')
        :param input_layer_name: name of the input layer for this layer. If None, it will take the last added layer of
        the network.
        """

        self.__validate_padding(padding)

        input_layer = self.__network.get_layer(input_layer_name)

        output = tf.nn.max_pool(input_layer,
                                ksize=[1, kernel_size[1], kernel_size[0], 1],
                                strides=[1, stride_size[1], stride_size[0], 1],
                                padding=padding,
                                name=name)

        self.__network.add_layer(name, layer_output=output)