Understand MatConvNet and contribute to it
There are several parts to MatConvNet. It is important to understand this modular structure so that everybody can maximally benefit from your contributions. In particular, the easiest way to contribute something of general utility to the library is to create a new building block, as explained below:
Building blocks. The most important are the neural network building blocks, i.e. MATLAB functions prefixed by
vl_nnconv. To add a new "layer" or "computational block", add such a function. These are found in the directory
CNN wrappers. There are a few wrappers (
vl_dagnn) that allow implementing networks composed of several blocks. These are located in
matlab/wrappers. These wrappers are fairly generic, but there are case in which writing a new wrapper type may be useful.
C++/CUDA library. While many blocks can be written in MATLAB directly, some such as convolution and max-pooling require custom C++ and CUDA code. In this case, create a MEX file in
matlab/srcand add the required functionality to the C++/CUDA library by adding files to
Examples. Other components of the library are at the moment delivered as examples in the
examples/directory. This include basic SGD code for training networks in
examples/cnn_train.m. Note that these functions are not supposed to have very broad generality, although in practice they can be an excellent starting point to write your own learning algorithms.
If you develop the C++/CUDA core of the library, it may be convenient to switch using an IDE/command line and the Makefile for compiling the library.
Creating the website
MatConvNet website uses the MkDocs documentation system, a simple static website generator written in Python. In order to setup the necessary software, follow these steps:
- Install MkDocs as explained here.
- Install the
MathJax MkDocs extension. This
is explained in the
READMEfile in the extension GitHub repository and consists in renaming and copying a file into your copy of MkDocs.
- Make sure that the
mkdocscommand is executable from the command line, or otherwise modify the file
doc/Makefilein MatConvNet to point to the correct executable.
At this point, the website can be built with
make doc-site from the
command line. The documentation is created in
doc/site/site from the
For developing the website, it is useful to start the MkDocs HTTP server as follows:
cd doc/site mkdocs serve
At this point visit
http://127.0.0.1:8000/ to see a copy of the
Creating the MATLAB function pages
The documentation for the MATLAB function is extracted automatically
from the m-files using the
doc/matdoc.py Python script. This is
doc/Makefile as needed.
matdoc.py does three things: it extracts the function documentation
from a m-file, it interprets it using a pseudo-Markdown syntax, and
then it writes the result in Markdown format for use with
MkDocs. These are stored in