泛化神经网络

泛化神经网络

我在用这个 latex 包用来绘制神经网络(自动编码器)。到目前为止,我有以下内容:

\begin{neuralnetwork}[height=4]
    \newcommand{\nodetextclear}[2]{}
    \newcommand{\nodetextx}[2]{$x_#2$}
    \newcommand{\nodetexty}[2]{$y_#2$}
    \inputlayer[count=4, bias=false, title=Input\\layer, text=\nodetextx]
    \hiddenlayer[count=3, bias=false, title=Hidden\\layer, text=\nodetextclear] \linklayers
    \outputlayer[count=4, title=Output\\layer, text=\nodetextx] \linklayers
\end{neuralnetwork}

在此处输入图片描述

我想知道是否有办法使图表通用。我希望它不是转到 $x_4$,而是转到带有三个点的 $x_n$。这个包可以实现吗?

答案1

是的:

代码输出

从代码中可以看出,还需要做更多工作。要不绘制层中的特定节点,可以使用键exclude。要不绘制到/来自该排除节点的链接,您可以在选项中使用not to/ ,但由于软件包中存在错误,目前这需要一个小补丁。not from\linklayers

为了定位点,我利用每个节点都被命名为的事实Ln-m,其中n是层号(从 0 开始计数),m是节点号。

最后,为了得到n最后一层的下标,\ifnum在定义中使用了\nodetextx,类似于GitHub 存储库中的此示例

\documentclass[border=5mm]{standalone}
\usepackage{neuralnetwork}
\usepackage{xpatch}
\makeatletter
% \linklayers have \nn@lastnode instead of \lastnode,
% patch it to replace the former with the latter, and similar for thisnode
\xpatchcmd{\linklayers}{\nn@lastnode}{\lastnode}{}{}
\xpatchcmd{\linklayers}{\nn@thisnode}{\thisnode}{}{}
\makeatother
\begin{document}
\begin{neuralnetwork}[height=4]
    \newcommand{\nodetextclear}[2]{}
    % use \ifnum to get different labels
    \newcommand{\nodetextx}[2]{\ifnum #2=4 $x_n$ \else $x_#2$ \fi}
    \newcommand{\nodetexty}[2]{$y_#2$}
    % use exclude to turn off drawing of specific layers
    \inputlayer[count=4, bias=false, exclude={3}, title=Input\\layer, text=\nodetextx]
    \hiddenlayer[count=3, bias=false, title=Hidden\\layer, text=\nodetextclear]
      \linklayers[not from={3}]
    \outputlayer[count=4, exclude={3}, title=Output\\layer, text=\nodetextx] 
      \linklayers[not to={3}]

    % draw dots
    \path (L0-2) -- node{$\vdots$} (L0-4);
    \path (L2-2) -- node{$\vdots$} (L2-4);
\end{neuralnetwork}
\end{document}

相关内容