PlotNeuralNet README

The project's README from github.com/HarisIqbal88/PlotNeuralNet. As one markdown file: README.md.

PlotNeuralNet

DOI

Latex code for drawing neural networks for reports and presentation. Have a look into examples to see how they are made. Additionally, lets consolidate any improvements that you make and fix any bugs to help more people with this code.

Examples

Following are some network representations:

FCN-8 (view on Overleaf)

FCN-32 (view on Overleaf)

Holistically-Nested Edge Detection (view on Overleaf)

Getting Started

  1. Install the following packages on Ubuntu.
    • Ubuntu 16.04

      sudo apt-get install texlive-latex-extra
      
    • Ubuntu 18.04.2

Base on this website, please install the following packages. sudo apt-get install texlive-latex-base sudo apt-get install texlive-fonts-recommended sudo apt-get install texlive-fonts-extra sudo apt-get install texlive-latex-extra

* Windows
1. Download and install [MikTeX](https://miktex.org/download).
2. Download and install bash runner on Windows, recommends [Git bash](https://git-scm.com/download/win) or Cygwin(https://www.cygwin.com/)
  1. Execute the example as followed.
    cd pyexamples/
    bash ../tikzmake.sh test_simple
    

TODO

Latex usage

See examples directory for usage.

Python usage

First, create a new directory and a new Python file:

$ mkdir my_project
$ cd my_project
vim my_arch.py

Add the following code to your new file:

import sys
sys.path.append('../')
from pycore.tikzeng import *

# defined your arch
arch = [
    to_head( '..' ),
    to_cor(),
    to_begin(),
    to_Conv("conv1", 512, 64, offset="(0,0,0)", to="(0,0,0)", height=64, depth=64, width=2 ),
    to_Pool("pool1", offset="(0,0,0)", to="(conv1-east)"),
    to_Conv("conv2", 128, 64, offset="(1,0,0)", to="(pool1-east)", height=32, depth=32, width=2 ),
    to_connection( "pool1", "conv2"),
    to_Pool("pool2", offset="(0,0,0)", to="(conv2-east)", height=28, depth=28, width=1),
    to_SoftMax("soft1", 10 ,"(3,0,0)", "(pool1-east)", caption="SOFT"  ),
    to_connection("pool2", "soft1"),
    to_end()
    ]

def main():
    namefile = str(sys.argv[0]).split('.')[0]
    to_generate(arch, namefile + '.tex' )

if __name__ == '__main__':
    main()

Now, run the program as follows:

bash ../tikzmake.sh my_arch

PlotNeuralNet (HarisIqbal88/PlotNeuralNet)

Searching Database…

What is this?PlotNeuralNet is a collection of LaTeX code for drawing neural network diagrams for reports and presentations, with ready-made examples like FCN-8 and FCN-32.
So I don't draw these by hand in an editor — how does it actually work?You describe your network in code and TikZ renders it as a vector diagram: either write LaTeX directly (the examples directory shows how) or use the included Python interface.
How do I get it running?Install a TeX toolchain first: the packages it lists for Ubuntu 16.04/18.04, or MikTeX plus a bash runner like Git bash or Cygwin on Windows. Then run an example with bash ../tikzmake.sh myarch.
Do I need to be a LaTeX expert to use it?No. Besides plain LaTeX usage shown in the examples directory, there is a Python interface: write a script like myarch.py describing your layers, then run bash ../tikzmake.sh myarch.
Anything it can't draw yet?The TODO list still includes an easy legend feature, more layer shapes such as TruncatedPyramid and 2DSheet, and examples for RNN-like networks; the Python interface itself is already done.
Will it work on my Mac, or is it Linux and Windows only?The README gives install steps only for Ubuntu 16.04/18.04 and for Windows via MikTeX plus Git bash or Cygwin; macOS is not mentioned.
What networks do the ready-made examples show?The README lists FCN-8, FCN-32 and Holistically-Nested Edge Detection as the example network representations, and points to the examples directory to see exactly how each one is built.
Why did the author publish this?So improvements get shared: the README asks users to consolidate their improvements and bug fixes back into the project so the code helps more people.
Size
2.2 MB
Stars
25K
Age
8y
Commits · 90 Days