cubek-pool 0.3.0

CubeK: Pool
#[derive(Clone, Debug)]
pub struct MaxPoolOptions<const N: usize> {
    pub window: PoolWindow<N>,
    pub dilation: [usize; N],
}

impl<const N: usize> MaxPoolOptions<N> {
    pub fn new(
        kernel_size: [usize; N],
        stride: [usize; N],
        padding: [usize; N],
        dilation: [usize; N],
        ceil_mode: bool,
    ) -> Self {
        Self {
            window: PoolWindow {
                kernel_size,
                stride,
                padding,
                ceil_mode,
            },
            dilation,
        }
    }
}

#[derive(Clone, Debug)]
pub struct AvgPoolOptions<const N: usize> {
    pub window: PoolWindow<N>,
    pub count_include_pad: bool,
}

impl<const N: usize> AvgPoolOptions<N> {
    pub fn new(
        kernel_size: [usize; N],
        stride: [usize; N],
        padding: [usize; N],
        ceil_mode: bool,
        count_include_pad: bool,
    ) -> Self {
        Self {
            window: PoolWindow {
                kernel_size,
                stride,
                padding,
                ceil_mode,
            },
            count_include_pad,
        }
    }
}

#[derive(Clone, Debug)]
pub struct AdaptiveAvgPoolOptions<const N: usize> {
    pub output_size: [usize; N],
}

impl<const N: usize> AdaptiveAvgPoolOptions<N> {
    pub fn new(output_size: [usize; N]) -> Self {
        Self { output_size }
    }
}

#[derive(Clone, Debug)]
pub struct PoolWindow<const N: usize> {
    pub kernel_size: [usize; N],
    pub stride: [usize; N],
    pub padding: [usize; N],
    pub ceil_mode: bool,
}