
\documentclass[border=8pt, multi, tikz]{standalone} 
\usepackage{import}
\subimport{../layers/}{init}
\usetikzlibrary{positioning}
\usetikzlibrary{3d} %for including external image 


\def\ConvColor{rgb:yellow,5;red,2.5;white,5}
\def\ConvReluColor{rgb:yellow,5;red,5;white,5}
\def\PoolColor{rgb:red,1;black,0.3}
\def\UnpoolColor{rgb:blue,2;green,1;black,0.3}
\def\FcColor{rgb:blue,5;red,2.5;white,5}
\def\FcReluColor{rgb:blue,5;red,5;white,4}
\def\SoftmaxColor{rgb:magenta,5;black,7}   
\def\SumColor{rgb:blue,5;green,15}


\newcommand{\copymidarrow}{\tikz \draw[-Stealth,line width=0.8mm,draw={rgb:blue,4;red,1;green,1;black,3}] (-0.3,0) -- ++(0.3,0);}

\begin{document}
\begin{tikzpicture}
\tikzstyle{connection}=[ultra thick,every node/.style={sloped,allow upside down},draw=\edgecolor,opacity=0.7]
\tikzstyle{copyconnection}=[ultra thick,every node/.style={sloped,allow upside down},draw={rgb:blue,4;red,1;green,1;black,3},opacity=0.7]


\pic[shift={(2,0,0)}] at (0,0,0) 
    {Box={
        name=latent,
        caption=Latent Space,
        captionshift=0,
        xlabel={{, }},
        zlabeloffset=0.3,
        zlabel=latent dim,
        fill=\ConvColor,
        height=19.200000000000003,
        width=1,
        depth=1
        }
    };


\pic[shift={(2,-.5,0)}] at (latent-east)
    {Box={
        name=fc3,
        caption=FC,
        captionshift=20,
        xlabel={{" ","dummy"}},
        zlabeloffset=0.5,
        zlabel={{8×128×8}},
        fill=\FcColor,
        opacity=0.8,
        height=1,
        width=1,
        depth=24
        }
    };


\pic[shift={(1.4,0,0)}] at (fc3-east) 
    {Box={
        name=unsqueeze,
        caption=Unsqueeze,
        captionshift=0,
        xlabel={{32, }},
        zlabeloffset=0.4,
        zlabel={{128×8}},
        fill=\ConvColor,
        height=12,
        width=8,
        depth=6
        }
    };


\pic[shift={ (1.2,0,0) }] at (unsqueeze-east) 
    {Box={
        name=up1,
        caption=,
        captionshift=0,
        fill=\UnpoolColor,
        opacity=0.5,
        xlabel={{32, }},
        height=18,
        width=8,
        depth=12
        }
    };


\pic[shift={(0,0,0)}] at (up1-east) 
    {Box={
        name=dwdeconv1,
        caption=Deconv1,
        captionshift=0,
        xlabel={{1, }},
        zlabeloffset=0.3,
        zlabel=,
        fill=\ConvColor,
        height=18,
        width=1,
        depth=12
        }
    };


\pic[shift={(0,0,0)}] at (dwdeconv1-east) 
    {Box={
        name=dwdeconv2,
        caption=,
        captionshift=0,
        xlabel={{32, }},
        zlabeloffset=0.4,
        zlabel={{256×16}},
        fill=\ConvColor,
        height=18,
        width=8,
        depth=12
        }
    };


\pic[shift={ (2,0,0) }] at (dwdeconv2-east) 
    {Box={
        name=up2,
        caption=Deconv2,
        captionshift=20,
        fill=\UnpoolColor,
        opacity=0.5,
        xlabel={{32, }},
        height=18,
        width=8,
        depth=36
        }
    };


\pic[shift={(0,0,0)}] at (up2-east) 
    {Box={
        name=dwdeconv3,
        caption=,
        captionshift=0,
        xlabel={{1, }},
        zlabeloffset=0.3,
        zlabel=,
        fill=\ConvColor,
        height=18,
        width=1,
        depth=36
        }
    };


\pic[shift={(0,0,0)}] at (dwdeconv3-east) 
    {Box={
        name=dwdeconv4,
        caption=,
        captionshift=0,
        xlabel={{16, }},
        zlabeloffset=0.17,
        zlabel={{1024×16}},
        fill=\ConvColor,
        height=18,
        width=4,
        depth=36
        }
    };


\pic[shift={ (2,0,0) }] at (dwdeconv4-east) 
    {Box={
        name=up3,
        caption=Deconv3,
        captionshift=10,
        fill=\UnpoolColor,
        opacity=0.5,
        xlabel={{16, }},
        height=26,
        width=4,
        depth=52
        }
    };


\pic[shift={(0,0,0)}] at (up3-east) 
    {Box={
        name=dwdeconv5,
        caption=,
        captionshift=0,
        xlabel={{1, }},
        zlabeloffset=0.3,
        zlabel=,
        fill=\ConvColor,
        height=26,
        width=1,
        depth=52
        }
    };


\pic[shift={(0,0,0)}] at (dwdeconv5-east) 
    {Box={
        name=dwdeconv6,
        caption=,
        captionshift=0,
        xlabel={{8, }},
        zlabeloffset=0.15,
        zlabel={{2048×32}},
        fill=\ConvColor,
        height=26,
        width=2,
        depth=52
        }
    };


\pic[shift={(1.5,0,0)}] at (dwdeconv6-east) 
    {Box={
        name=outconv,
        caption=Deconv4,
        captionshift=0,
        xlabel={{1, }},
        zlabeloffset=0.15,
        zlabel={{2048×32}},
        fill=\ConvColor,
        height=26,
        width=1,
        depth=52
        }
    };


\pic[shift={(1.5,0,0)}] at (outconv-east) 
    {Box={
        name=out,
        caption=Output,
        captionshift=5,
        xlabel={{1, }},
        zlabeloffset=0.15,
        zlabel={{2048×32}},
        fill=\ConvColor,
        height=26,
        width=1,
        depth=52
        }
    };


\end{tikzpicture}
\end{document}

