Variational autoencoder (VAE) architecture. The earliest type of generative machine learning model. Inspired by https://towardsdatascience.com/intuitively-understanding-variational-autoencoders-1bfe67eb5daf.
Edit and compile if you like:
% Variational autoencoder architecture. The earliest type of generative machine learning model.% Inspired by https://towardsdatascience.com/intuitively-understanding-variational-autoencoders-1bfe67eb5daf.\documentclass[tikz]{standalone}\usepackage{xstring}\usetikzlibrary{fit,positioning}\newcommand\drawNodes[2]{% #1 (str): namespace% #2 (list[list[str]]): list of labels to print in the node of each neuron\foreach \neurons [count=\lyrIdx] in #2 {\StrCount{\neurons}{,}[\lyrLength] % use xstring package to save each layer size into \lyrLength macro\foreach \n [count=\nIdx] in \neurons\node[neuron] (#1-\lyrIdx-\nIdx) at (2*\lyrIdx, \lyrLength/2-1.4*\nIdx) {\n};}}\newcommand\denselyConnectNodes[2]{% #1 (str): namespace% #2 (list[int]): number of nodes in each layer\foreach \n [count=\lyrIdx, remember=\lyrIdx as \previdx, remember=\n as \prevn] in #2 {\foreach \y in {1,...,\n} {\ifnum \lyrIdx > 1\foreach \x in {1,...,\prevn}\draw[->] (#1-\previdx-\x) -- (#1-\lyrIdx-\y);\fi}}}\begin{document}\begin{tikzpicture}[shorten >=1pt, shorten <=1pt,neuron/.style={circle, draw, minimum size=4ex, thick},legend/.style={font=\large\bfseries},]% encoder\drawNodes{encoder}{{{,,,,}, {,,,}, {,,}}}
Click to download: vae.tex
Open in Overleaf: vae.tex
This file is available on tikz.netlify.app and on GitHub and is MIT licensed.
See more on the author page of Janosh Riebesell..