Abbildung: Neuronales Netzwerk

Abbildung: Neuronales Netzwerk

Ich versuche, mithilfe des neuralnetworkPakets eine Abbildung eines neuronalen Netzwerks zu erstellen. Ich möchte meine Bias-Neuronen separat beschriften.

Im Moment habe ich den Code:

\documentclass[fleqn,11pt,a4paper,final]{article} 
\usepackage{neuralnetwork}
\begin{document}

\begin{figure}[h!]
\begin{neuralnetwork}[height=1.5 ,maintitleheight=1cm,layertitleheight=3cm]
  \newcommand{\nodetextx}[2]{$x_{#2}$}
  \newcommand{\nodetextz}[2]{$y$}
  \newcommand{\nodetexth}[2]{$h_{#2,1}$}
  \newcommand{\nodetexthto}[2]{$h_{#2,2}$}
  \inputlayer[count=3, title={Input-lag}, text=\nodetextx]
  \hiddenlayer[count=5, title={Skjult lag}, text=\nodetexth]
  \linklayers
  \hiddenlayer[count=4, title={Skjult lag}, text=\nodetexthto]
   \linklayers
  \outputlayer[count=1, title={Output-lag}, text=\nodetextz] 
  \linklayers
\end{neuralnetwork}
\end{figure}
\end{document}

Das gibt mir die folgende Illustration: Bildbeschreibung hier eingeben

Ich möchte, dass das x_0-Neuron beschriftet wird \textbf{c_1}, das h_{0,1}-Neuron beschriftet wird \textbf{c_2}und schließlich das h_{0,2}-Neuron beschriftet wird b. Wie mache ich das?

Hilfe wird geschätzt. Danke

Antwort1

Das ist vielleicht komplizierter als nötig, aber es scheint zu funktionieren.

Bildbeschreibung hier eingeben

\documentclass[border=5mm]{standalone}
\usepackage{xpatch}
\usepackage{neuralnetwork}
% this is the command that prints the first node in a layer
%    \node[bias neuron] (L\nn@layerindex-0) at (\nn@node@xb, \nn@node@y) {\nn@nodecaption{\nn@layerindex}{0}};
% we want to modify the last bit to use the loop macro \nn@nodeindex instead of 0
\makeatletter
\xpatchcmd{\layer}{\nn@nodecaption{\nn@layerindex}{0}}{\nn@nodecaption{\nn@layerindex}{\nn@nodeindex}}{}{}

% define the nodeindex to be zero initially
\newcommand\nn@nodeindex{0}

\newcommand{\nodetextx}[2]{
  \ifnum \nn@nodeindex=0
     $\mathbf{c_1}$
  \else
     $x_{#2}$
  \fi
}

\newcommand{\nodetextz}[2]{$y$}

\newcommand{\nodetexth}[2]{
  \ifnum \nn@nodeindex=0
    $\mathbf{c_2}$
  \else
    $h_{#2,1}$
  \fi
}

\newcommand{\nodetexthto}[2]{
  \ifnum \nn@nodeindex=0
    $b$
  \else
    $h_{#2,2}$
  \fi
}
\makeatother

\begin{document}
\begin{neuralnetwork}[height=1.5 ,maintitleheight=1cm,layertitleheight=3cm]
  \inputlayer[count=3, title={Input-lag}, text=\nodetextx]
  \hiddenlayer[count=5, title={Skjult lag}, text=\nodetexth]
  \linklayers
  \hiddenlayer[count=4, title={Skjult lag}, text=\nodetexthto]
  \linklayers
  \outputlayer[count=1, title={Output-lag}, text=\nodetextz] 
  \linklayers
\end{neuralnetwork}
\end{document}

Antwort2

lösen

Bildbeschreibung hier eingeben

Ich möchte zu meiner Lösung beitragen. Lösen Sie das Problem, indem Sie das bias = falseTag setzen. Ich weiß nicht mehr, wofür Bias steht. Ich habe es in einem anderen Blog gefunden und es hat funktioniert.

\documentclass[border=5mm]{standalone}
\usepackage{xpatch}
\usepackage{neuralnetwork}
  % this is the command that prints the first node in a layer
%    \node[bias neuron] (L\nn@layerindex-0) at (\nn@node@xb, \nn@node@y) {\nn@nodecaption{\nn@layerindex}{0}};
% we want to modify the last bit to use the loop macro \nn@nodeindex instead of 0
\makeatletter
\xpatchcmd{\layer}{\nn@nodecaption{\nn@layerindex}{0}}{\nn@nodecaption{\nn@layerindex}{\nn@nodeindex}}{}{}

% define the nodeindex to be zero initially
\newcommand\nn@nodeindex{0}

\newcommand{\nodetextx}[2]{
  \ifnum \nn@nodeindex=0
     $\mathbf{c_1}$
  \else
     $i_{#2}$
  \fi
}

\newcommand{\nodetextz}[2]{$o_1$}

\newcommand{\nodetexth}[2]{
  \ifnum \nn@nodeindex=0
    $\mathbf{c_2}$
  \else
    $h_{1, #2}$
  \fi
}

\newcommand{\nodetexthto}[2]{
  \ifnum \nn@nodeindex=0
    $b$
  \else
    $h_{2, #2}$
  \fi
}
\makeatother

\begin{document}
\begin{neuralnetwork}[height=1.5 ,maintitleheight=1cm,layertitleheight=5cm]
  \inputlayer[count=5, bias=false, title={Input}, text=\nodetextx]

  \hiddenlayer[count=10, bias=false, title={Oc1}, text=\nodetexth]
  \linklayers
  \hiddenlayer[count=10, bias=false, title={Oc2}, text=\nodetexthto]
  \linklayers

  \outputlayer[count=1, title={Output}, text=\nodetextz] 
  \linklayers
\end{neuralnetwork}
\end{document}

verwandte Informationen