Source code for gamspy.formulations.nn.maxpool2d
from __future__ import annotations
import gamspy as gp
from gamspy.formulations.nn.mpool2d import _MPool2d
[docs]
class MaxPool2d(_MPool2d):
"""
Formulation generator for 2D Max Pooling in GAMS.
Parameters
----------
container : Container
Container that will contain the new variable and equations.
kernel_size : int | tuple[int, int]
Filter size
stride : int | tuple[int, int] | None
Stride in the max pooling, it is equal to kernel_size if not provided
padding : int | tuple[int, int]
Amount of padding to be added to input, by default 0
Examples
--------
>>> import gamspy as gp
>>> from gamspy.math import dim
>>> m = gp.Container()
>>> # 2x2 max pooling
>>> mp1 = gp.formulations.MaxPool2d(m, (2, 2))
>>> inp = gp.Variable(m, domain=dim((10, 1, 24, 24)))
>>> out, eqs = mp1(inp)
>>> type(out)
<class 'gamspy._symbols.variable.Variable'>
>>> [len(x) for x in out.domain]
[10, 1, 12, 12]
"""
def __init__(
self,
container: gp.Container,
kernel_size: int | tuple[int, int],
stride: int | None = None,
padding: int = 0,
):
super().__init__("max", container, kernel_size, stride, padding)
[docs]
def __call__(
self, input: gp.Parameter | gp.Variable, big_m: int = 1000
) -> tuple[gp.Variable, list[gp.Equation]]:
"""
Forward pass your input, generate output and equations required for
calculating the max pooling. Returns the output variable and the list
of equations required for the max pooling formulation.
Parameters
----------
input : gp.Parameter | gp.Variable
input to the max pooling 2d layer, must be in shape
(batch x in_channels x height x width)
big_m: int
Big M value that is required for the pooling operation.
Default value: 1000.
Returns
-------
tuple[gp.Variable, list[gp.Equation]]
"""
return super().__call__(input, big_m)