Github url


by HarisIqbal88

HarisIqbal88 /PlotNeuralNet

Latex code for making neural networks diagrams

8.8K Stars 1.3K Forks Last release: over 1 year ago (v1.0.0) MIT License 51 Commits 2 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:



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.


Following are some network representations:



Holistically-Nested Edge Detection

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]( 2. Download and install bash runner on Windows, recommends [Git bash]( or Cygwin(
  1. Execute the example as followed.
    cd pyexamples/ bash ../ test\_simple


  • Python interface
  • [] Add easy legend functionality
  • [] Add more layer shapes like TruncatedPyramid, 2DSheet etc
  • [] Add examples for RNN and likes.

Latex usage

See [


]( directory for usage.

Python usage

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

$ mkdir my\_project $ cd my\_project vim my\

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 ../ my\_arch

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.