Home

Awesome

Convolution arithmetic

A technical report on convolution arithmetic in the context of deep learning.

The code and the images of this tutorial are free to use as regulated by the licence and subject to proper attribution:

Convolution animations

N.B.: Blue maps are inputs, and cyan maps are outputs.

<table style="width:100%; table-layout:fixed;"> <tr> <td><img width="150px" src="gif/no_padding_no_strides.gif"></td> <td><img width="150px" src="gif/arbitrary_padding_no_strides.gif"></td> <td><img width="150px" src="gif/same_padding_no_strides.gif"></td> <td><img width="150px" src="gif/full_padding_no_strides.gif"></td> </tr> <tr> <td>No padding, no strides</td> <td>Arbitrary padding, no strides</td> <td>Half padding, no strides</td> <td>Full padding, no strides</td> </tr> <tr> <td><img width="150px" src="gif/no_padding_strides.gif"></td> <td><img width="150px" src="gif/padding_strides.gif"></td> <td><img width="150px" src="gif/padding_strides_odd.gif"></td> <td></td> </tr> <tr> <td>No padding, strides</td> <td>Padding, strides</td> <td>Padding, strides (odd)</td> <td></td> </tr> </table>

Transposed convolution animations

N.B.: Blue maps are inputs, and cyan maps are outputs.

<table style="width:100%; table-layout:fixed;"> <tr> <td><img width="150px" src="gif/no_padding_no_strides_transposed.gif"></td> <td><img width="150px" src="gif/arbitrary_padding_no_strides_transposed.gif"></td> <td><img width="150px" src="gif/same_padding_no_strides_transposed.gif"></td> <td><img width="150px" src="gif/full_padding_no_strides_transposed.gif"></td> </tr> <tr> <td>No padding, no strides, transposed</td> <td>Arbitrary padding, no strides, transposed</td> <td>Half padding, no strides, transposed</td> <td>Full padding, no strides, transposed</td> </tr> <tr> <td><img width="150px" src="gif/no_padding_strides_transposed.gif"></td> <td><img width="150px" src="gif/padding_strides_transposed.gif"></td> <td><img width="150px" src="gif/padding_strides_odd_transposed.gif"></td> <td></td> </tr> <tr> <td>No padding, strides, transposed</td> <td>Padding, strides, transposed</td> <td>Padding, strides, transposed (odd)</td> <td></td> </tr> </table>

Dilated convolution animations

N.B.: Blue maps are inputs, and cyan maps are outputs.

<table style="width:25%"; table-layout:fixed;> <tr> <td><img width="150px" src="gif/dilation.gif"></td> </tr> <tr> <td>No padding, no stride, dilation</td> </tr> </table>

Generating the Makefile

From the repository's root directory:

$ ./bin/generate_makefile

Generating the animations

From the repository's root directory:

$ make all_animations

The animations will be output to the gif directory. Individual animation steps will be output in PDF format to the pdf directory and in PNG format to the png directory.

Compiling the document

From the repository's root directory:

$ make