summaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-06-23 03:01:05 +0000
committerNorbert Preining <norbert@preining.info>2021-06-23 03:01:05 +0000
commita809a190ff669feb11cb64db915b763abd0bed81 (patch)
tree6794c6d439e4e4afe002c5230493427c330b959e /graphics
parent2a49c67eee870febe71143a093f3c304e0033153 (diff)
CTAN sync 202106230301
Diffstat (limited to 'graphics')
-rw-r--r--graphics/pgf/contrib/nndraw/README42
-rw-r--r--graphics/pgf/contrib/nndraw/nndraw.dtx258
-rw-r--r--graphics/pgf/contrib/nndraw/nndraw.ins58
-rw-r--r--graphics/pgf/contrib/nndraw/nndraw.pdfbin0 -> 102511 bytes
4 files changed, 358 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/nndraw/README b/graphics/pgf/contrib/nndraw/README
new file mode 100644
index 0000000000..35018d65c6
--- /dev/null
+++ b/graphics/pgf/contrib/nndraw/README
@@ -0,0 +1,42 @@
+NAME
+ nndraw -- a LaTeX package which provides utilities to draw neural networks
+
+VERSION
+ Version: 1.0
+
+COPYRIGHT
+ Copyright (C) 2021 by Carlos Cardoso Dias <carlosdias.dev@gmail.com>
+ --------------------------------------------------------------------------
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license or (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+DESCRIPTION
+ Draws fully connected neural networks in a simple and efficient way
+
+USAGE
+ Usage example: a fully connected neural network with input and output layers
+ and one hidden layer.
+
+ \usepackage{nndraw}
+ \begin{document}
+ \begin{fullyconnectednn}[biasy = -4.5,
+ titley = 1,
+ inout = false]
+ \nnlayer[title = Input layer]{2}
+ \nnlayer[title = Hidden layer]{4}
+ \nnlayer[title = Ouput layer, hasbias = false]{1}
+ \end{fullyconnectednn}
+ \end{document}
+
+AUTHOR
+ Carlos Cardoso Dias
+
+ E-mail: carlosdias.dev@gmail.com
+
+ WWW: <https://carloscdias.com/>
+
diff --git a/graphics/pgf/contrib/nndraw/nndraw.dtx b/graphics/pgf/contrib/nndraw/nndraw.dtx
new file mode 100644
index 0000000000..fe1a090149
--- /dev/null
+++ b/graphics/pgf/contrib/nndraw/nndraw.dtx
@@ -0,0 +1,258 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2021 by Carlos Cardoso Dias <carlosdias.dev@gmail.com>
+% ---------------------------------------------------------------------------
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Carlos Cardoso Dias.
+%
+% This work consists of the files nndraw.dtx and nndraw.ins
+% and the derived filebase nndraw.sty.
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{nndraw.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{nndraw}
+%<*package>
+ [2021/06/22 1.0 nndraw is a LaTeX package which provides utilities to draw neural networks.]
+%</package>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{nndraw}[2021/06/22]
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{nndraw.dtx}
+ \PrintChanges
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{129}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+% \changes{1.0}{2021/06/22}{Converted to DTX file}
+%
+% \DoNotIndex{\newcommand,\newenvironment}
+%
+% \providecommand*{\url}{\texttt}
+% \GetFileInfo{nndraw.dtx}
+% \title{The \textsf{nndraw} package}
+% \author{Carlos Cardoso Dias \\ \url{carlosdias.dev@gmail.com}}
+% \date{\fileversion~from \filedate}
+%
+% \maketitle
+%
+% \section{Introduction}
+%
+\textbf{nndraw} is a \LaTeX package which provides utilities to draw neural networks in an efficient way.
+Currently this package provides utilities to draw fully connected feedforward neural networks with an arbitrary
+number of layers described inside the `fullyconnectednn` environment using the command `nnlayer`.
+%
+% \section{Usage}
+%
+An example of usage is shown below, in this example, a fully connected feedforward
+deep neural network is provided with two inputs in the first layer, one hidden layer
+with four neurons and one output layer with one output. This example shows how easy it is
+to customize the presence/absence of biases in any layer as well as its position.
+
+\begin{verbatim}
+\begin{fullyconnectednn}[biasy = -4.5,
+ titley = 1,
+ inout = false]
+ \nnlayer[title = Input layer]{2}
+ \nnlayer[title = Hidden layer]{4}
+ \nnlayer[title = Ouput layer, hasbias = false]{1}
+\end{fullyconnectednn}
+\end{verbatim}
+
+\noindent Which is drawn as
+
+\begin{fullyconnectednn}[biasy = -4.5,
+ titley = 1,
+ inout = false]
+ \nnlayer[title = Input layer]{2}
+ \nnlayer[title = Hidden layer]{4}
+ \nnlayer[title = Ouput layer, hasbias = false]{1}
+\end{fullyconnectednn}
+%
+%
+% \StopEventually{}
+%
+% \section{Implementation}
+%
+% \iffalse
+%<*package>
+% \fi
+%
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{nndraw}[2021/06/20 Neural Networks Draw LaTeX package]
+\RequirePackage{tikz}
+\pgfdeclarelayer{back}
+\pgfsetlayers{back,main}
+% \end{macrocode}
+%
+% \begin{macro}{\nnlayerNoText}
+% \begin{macrocode}
+\newcommand\nnlayerNoText[1]{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\newif\ifnnlayerHasBias
+\pgfkeys{
+ /nnlayer/.is family, /nnlayer,
+ default/.style = {title = , text = \nnlayerNoText, hasbias = true, bias = , color = , biascolor = },
+ title/.estore in = \nnlayerTitle,
+ text/.store in = \nnlayerText,
+ hasbias/.is if = nnlayerHasBias,
+ bias/.estore in = \nnlayerBias,
+ color/.estore in = \nnlayerColor,
+ biascolor/.estore in = \nnlayerBiasColor,
+}
+\newcounter{numlayers}
+\newcounter{nninputlayer}
+\newcounter{lastnnsize}
+\tikzstyle{neuron}=[circle, minimum size=6mm, fill=gray!70]
+\tikzstyle{neuron_connection}=[->, shorten >=1pt, gray!70]
+% \end{macrocode}
+%
+% \begin{macro}{\nnlayer}
+% \begin{macrocode}
+\newcommand\nnlayer[2][]{
+ \pgfkeys{/nnlayer, default, #1}
+ \node[text width = \fullyconnectednnTextWidth, align = center] at (\fullyconnectednnLayersep *
+ \thenumlayers,\fullyconnectednnTitleY) {\nnlayerTitle};
+ \if\thenninputlayer0
+ \setcounter{nninputlayer}{#2}
+ \fi
+ \foreach \i in {1,...,#2}
+ {
+ \node[neuron, yshift=(#2 - \thenninputlayer)*5 mm, fill=\nnlayerColor] (\thenumlayers-\i) at (\thenumlayers * \fullyconnectednnLayersep,-\i) {\nnlayerText{\i}};
+ }
+ \if\thelastnnsize0
+ \else
+ \ifnnlayerHasBias
+ \node[neuron, yshift=5mm, fill=\nnlayerBiasColor] (bias-\thenumlayers) at (\thenumlayers * \fullyconnectednnLayersep -\fullyconnectednnLayersep + \fullyconnectednnBiasX, \fullyconnectednnBiasY) {\nnlayerBias};
+ \fi
+ \begin{pgfonlayer}{back}
+% \end{macrocode}
+% node connections
+% \begin{macrocode}
+ \foreach \i in {1,...,\thelastnnsize}
+ {
+ \foreach \j in {1,...,#2}
+ {
+ \draw[neuron_connection] (\the\numexpr\thenumlayers-1\relax-\i) -- (\thenumlayers-\j);
+ }
+ }
+% \end{macrocode}
+% bias connections
+% \begin{macrocode}
+ \ifnnlayerHasBias
+ \foreach \j in {1,...,#2}
+ {
+ \draw[neuron_connection] (bias-\thenumlayers) -- (\thenumlayers-\j);
+ }
+ \fi
+ \end{pgfonlayer}
+ \fi
+ \setcounter{lastnnsize}{#2}
+ \stepcounter{numlayers}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\newif\iffullyconnectednnInout
+\pgfkeys{
+ /fullyconnectednn/.is family, /fullyconnectednn,
+ default/.style = {input = \nnlayerNoText, output = \nnlayerNoText, layersep = 3, biasx = 0.75, biasy = -8.75, titley = 0.75, inout = true, text width = 2cm},
+ input/.store in = \fullyconnectednnInput,
+ output/.store in = \fullyconnectednnOutput,
+ layersep/.estore in = \fullyconnectednnLayersep,
+ biasx/.estore in = \fullyconnectednnBiasX,
+ biasy/.estore in = \fullyconnectednnBiasY,
+ titley/.estore in = \fullyconnectednnTitleY,
+ inout/.is if = fullyconnectednnInout,
+ text width/.estore in = \fullyconnectednnTextWidth,
+}
+% \end{macrocode}
+%
+% \begin{environment}{fullyconnectednn}
+% \begin{macrocode}
+\newenvironment{fullyconnectednn}[1][]
+ {
+ \pgfkeys{/fullyconnectednn, default, #1}
+ \begin{center}
+ \begin{tikzpicture}
+ \setcounter{numlayers}{0}
+ \setcounter{nninputlayer}{0}
+ \setcounter{lastnnsize}{0}
+ }
+ {
+ \iffullyconnectednnInout
+ \begin{pgfonlayer}{back}
+% \end{macrocode}
+% Inputs
+% \begin{macrocode}
+ \foreach \i in {1,...,\thenninputlayer}
+ {
+ \draw[<-, shorten <=1pt] (0-\i) -- ++(-1,0) node[left]{\fullyconnectednnInput{\i}};
+ }
+
+% \end{macrocode}
+% Outputs
+% \begin{macrocode}
+ \foreach \i in {1,...,\thelastnnsize}
+ {
+ \draw[->, shorten <=1pt] (\the\numexpr\thenumlayers-1\relax-\i) -- ++(1,0) node[right]{\fullyconnectednnOutput{\i}};
+ }
+ \end{pgfonlayer}
+ \fi
+ \end{tikzpicture}
+ \end{center}
+ }
+% \end{macrocode}
+% \end{environment}
+%
+
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
+\endinput
diff --git a/graphics/pgf/contrib/nndraw/nndraw.ins b/graphics/pgf/contrib/nndraw/nndraw.ins
new file mode 100644
index 0000000000..eeaed657d3
--- /dev/null
+++ b/graphics/pgf/contrib/nndraw/nndraw.ins
@@ -0,0 +1,58 @@
+%% Copyright (C) 2021 by Carlos Cardoso Dias <carlosdias.dev@gmail.com>
+%% --------------------------------------------------------------------------
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Carlos Cardoso Dias.
+%%
+%% This work consists of the files nndraw.dtx and nndraw.ins
+%% and the derived filebase nndraw.sty.
+%%
+
+\input docstrip.tex
+\keepsilent
+
+\usedir{tex/latex/nndraw}
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2021 by Carlos Cardoso Dias <carlosdias.dev@gmail.com>
+--------------------------------------------------------------------------
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+\endpreamble
+
+\generate{\file{nndraw.sty}{\from{nndraw.dtx}{package}}}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* nndraw.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file nndraw.dtx *}
+\Msg{* through LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+\endbatchfile
+
diff --git a/graphics/pgf/contrib/nndraw/nndraw.pdf b/graphics/pgf/contrib/nndraw/nndraw.pdf
new file mode 100644
index 0000000000..1328cb8f72
--- /dev/null
+++ b/graphics/pgf/contrib/nndraw/nndraw.pdf
Binary files differ