Ilustración de red neuronal

Ilustración de red neuronal

Estoy intentando crear una ilustración de red neuronal usando el neuralnetworkpaquete. Quiero etiquetar mis neuronas de sesgo por separado.

Ahora mismo tengo el código:

\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}

Lo que me da la siguiente ilustración: ingrese la descripción de la imagen aquí

Quiero x_0que se etiquete la neurona \textbf{c_1}, h_{0,1}que se etiquete la neurona \textbf{c_2}y, finalmente, h_{0,2}que se etiquete la neurona b. ¿Cómo hago esto?

Se agradece la ayuda. Gracias

Respuesta1

Esto puede ser más complicado de lo necesario, pero parece funcionar.

ingrese la descripción de la imagen aquí

\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}

Respuesta2

resolver

ingrese la descripción de la imagen aquí

Quiero contribuir a mi solución. Resuelve poniendo la bias = falseetiqueta. Ya no sé para qué sirve el sesgo. Lo encontré en otro blog y funcionó.

\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}

información relacionada