Draw single neural unit using tizk
A slightly more complex and concise alternative :-) :
\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}
You've almost answered the question yourself, but you don't want to draw the outline of every node, just one. So you need to add draw
as an option to just that one node. To increase the size you can add e.g minimum size=1cm
as well, and add a color name if you want to change the color.
In the code below I've just added one line, indicated by the comment.
\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}
I would also suggest that you don't use label
for the input nodes on the left and the output node. With a couple of other minor changes:
\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}