SlidingWindow

class SlidingWindow(kernel_size, padding=0, stride=1, dilation=1, **kwargs)[源代码]

将滑动窗口应用于input tensor并将窗口中的内容复制到相应的output 位置. 假设 input shape 是 \((N, C, IH, IW)\), 那么 output shape 应该是 \((N, C, OH, OW, window_h, window_w)\) 其中 \((OH, OW)\) 应该由 padding, stride, window 和 \((IH, IW)\) 计算得到, 和卷积一样,对于每个output 位置,有:

\[\begin{split}out_{n, c, oh, ow, wh, ww} &= src_{n, c, ih+wh, iw+ww} \\ \text{where } & ih=-pad_h+oh \times stride_h + (wh-1) \times (dilation_h-1) \\ & iw=-pad_w+ow \times stride_w + (ww-1) \times (dilation_w-1)\end{split}\]
参数

示例

>>> import numpy as np
>>> inp = Tensor(np.arange(30).reshape(1,1,5,6))
>>> op = M.SlidingWindow(kernel_size=3, padding=1, stride=2, dilation=2)
>>> out = op(inp)
>>> print(out.numpy())
[[[[[[ 0  0  0]
     [ 0  7  9]
     [ 0 19 21]]

    [[ 0  0  0]
     [ 7  9 11]
     [19 21 23]]]


   [[[ 0  7  9]
     [ 0 19 21]
     [ 0  0  0]]

    [[ 7  9 11]
     [19 21 23]
     [ 0  0  0]]]]]]