Dibuja una sola unidad neuronal usando tizk

Dibuja una sola unidad neuronal usando tizk

Me gustaría hacer el siguiente dibujo: ingrese la descripción de la imagen aquí

El siguiente es mi código de látex:

  \documentclass{article}

\usepackage{tikz}
\usetikzlibrary{positioning,arrows.meta,calc}

\tikzset{
  arro/.style={
    ->,
    >=latex
  },
  bloque/.style={
    draw,
    minimum height=1cm,
    minimum width=0.5cm
  }  
}

\begin{document}

\begin{tikzpicture}[]
\node[]
  (input)
  {Input};
\node[below=of input,label={left:$x_{1}$}]
  (inputi)
  {};
\node[below=of inputi,label={left:$x_{2}$}]
  (inputii)
  {};
\coordinate[below=of inputii] (aux);  
\node[below=of aux,label={left:$x_{3}$}]
  (inputiii)
  {};
\node[below=of inputiii,label={left:$+1$}]
  (inputiv)
  {};

\node[right=of input]
  (proje)
  {Projection};
\node[circle,label={above:\textsc{sum}}]
  at (proje|-aux)
  (projei)
  {};

\node[right=of proje]
  (out)
  {Output};
\node[label={right:$h_{w,b}(x)$}]
  at (out|-aux)
  (outi)
  {};

\foreach \Valor in {i,ii,iii,iv}
{
  \draw[arro] (input\Valor) -- (projei);
}  
\draw[arro] (projei) -- (outi);
\end{tikzpicture}

\end{document}

Lo que obtengo es: ingrese la descripción de la imagen aquí

Intento agregar el siguiente código:\begin{tikzpicture}[every node/.style={draw=black,circle}]

y consigue esto: ingrese la descripción de la imagen aquí

¿Alguien podría ayudarme? ¡Gracias!

Respuesta1

Casi has respondido la pregunta tú mismo, pero no quieres dibujar el contorno de cada nodo, solo uno. Por lo tanto, debe agregar drawcomo opción solo ese nodo. Para aumentar el tamaño, también puede agregar, por ejemplo minimum size=1cm, y agregar un nombre de color si desea cambiar el color.

En el código siguiente acabo de agregar una línea, indicada por el comentario.

ingrese la descripción de la imagen aquí

  \documentclass{article}

\usepackage{tikz}
\usetikzlibrary{positioning,arrows.meta,calc}

\tikzset{
  arro/.style={
    ->,
    >=latex
  },
  bloque/.style={
    draw,
    minimum height=1cm,
    minimum width=0.5cm
  }  
}

\begin{document}

\begin{tikzpicture}[]
\node[]
  (input)
  {Input};
\node[below=of input,label={left:$x_{1}$}]
  (inputi)
  {};
\node[below=of inputi,label={left:$x_{2}$}]
  (inputii)
  {};
\coordinate[below=of inputii] (aux);  
\node[below=of aux,label={left:$x_{3}$}]
  (inputiii)
  {};
\node[below=of inputiii,label={left:$+1$}]
  (inputiv)
  {};

\node[right=of input]
  (proje)
  {Projection};
\node[circle,
   draw,minimum size=1cm,orange, %% <-- these are added
   label={above:\textsc{sum}}]
  at (proje|-aux)
  (projei)
  {};

\node[right=of proje]
  (out)
  {Output};
\node[label={right:$h_{w,b}(x)$}]
  at (out|-aux)
  (outi)
  {};

\foreach \Valor in {i,ii,iii,iv}
{
  \draw[arro] (input\Valor) -- (projei);
}  
\draw[arro] (projei) -- (outi);
\end{tikzpicture}

\end{document}

También sugeriría que no lo use labelpara los nodos de entrada de la izquierda y el nodo de salida. Con un par de otros cambios menores:

ingrese la descripción de la imagen aquí

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{positioning,arrows.meta,calc}

\tikzset{
  arro/.style={
    ->,
    >=latex
  },
  bloque/.style={
    draw,
    minimum height=1cm,
    minimum width=0.5cm
  }  
}

\begin{document}

\begin{tikzpicture}[node distance=0.5cm and 1cm] % first value vertical distance, second horizontal
\node
  (input)
  {Input};
\node[below=of input]
  (inputi)
  {$x_{1}$};
\node[below=of inputi]
  (inputii)
  {$x_{2}$};
\coordinate[below=of inputii] (aux);  
\node[below=of aux]
  (inputiii)
  {$x_{3}$};
\node[below=of inputiii]
  (inputiv)
  {$+1$};

\node[right=of input]
  (proje)
  {Projection};
\node[circle,
   draw,minimum size=1cm,orange, 
   label={above:\textsc{sum}}]
  at (proje|-aux)
  (projei)
  {};

\node[right=of proje]
  (out)
  {Output};
\node
  at (out|-aux)
  (outi)
  {$h_{w,b}(x)$};

\foreach \Valor in {i,ii,iii,iv}
{
  \draw[arro] (input\Valor) -- (projei);
}  
\draw[arro] (projei) -- (outi);
\end{tikzpicture}
\end{document}

Respuesta2

Una alternativa un poco más compleja y concisa :-) :

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta, calc, chains, positioning}

\begin{document}
    \begin{tikzpicture}[
node distance = 4mm and 16mm,
  start chain = going below,
  arro/.style = {-Latex},
bloque/.style = {text width=4ex, inner sep=1pt, align=right, on chain},
                        ]
% inputs
\foreach \i [count=\j] in {1, 2, 3, +1}
    \node[bloque] (in-\j) {$x_{\i}$};
% output
\node (out) [circle, draw=orange, minimum size=6mm,
      label=\textsc{sum},
      right=of $(in-2)!0.5!(in-3)$]  {};
% conections
\foreach \i in {1,...,4}
    \draw[arro] (in-\i) -- (out);
% output
\coordinate[right=of out] (output);
\draw[arro] (out) -- (output) node[right]   {$h_{w,b}(x)$};
% layer labels
\node[above=of in-1.center]     {Input};
\node[above=of in-1 -| out]     {Projection};
\node[above=of in-1 -| output]  {Ouput};
    \end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada