convolution arithmetic

reference:

1. convolution

Set input data size \(i\), convolution kernel size \(k\), stride size \(s\), and zero padding size \(p\). Then the output size \(o\) is:

(1)\[o = \left\lfloor{\frac{i + 2p - k}{s}}\right\rfloor + 1 \,. \]

The floor function \({\lfloor}\,{\rfloor}\) can found at https://en.wikipedia.org/wiki/Floor_and_ceiling_functions.

2. pooling

According to (1), pooling output size is:

(2)\[o = \left\lfloor{\frac{i-k}{s}}\right\rfloor + 1 \,. \]

3. tansposed convolution

explanation:The convolution operation can be rewritten to matrix multiplication.

4. dilated convolution

The dilation “rate” is controlled by an additional hyperparameter \(d\). A kernel of size k dilated by a factor d has an effective size:

\[\hat{k} = k + (k-1)(d-1) \,. \]

Combined with (1) the output size is:

(3)\[o = \left\lfloor{\frac{i + 2p - k - (k-1)(d-1)}{s}}\right\rfloor + 1 \,. \]