我有这个代码,已根据我的用例进行了调整。
我正在创建一堆节点并将它们连接在一起。问题是,图中出现了节点名称(即 h1,... 和 v1...)。
我想摆脱那个名字,在我的形象中拥有纯粹的圆圈。
那可能吗?
尽管我认为这是一个相当普遍的问题,但我还是在这里附上了代码。
谢谢你!
\begin{figure}[h]
\centering
\def\layersep{2cm} % Gap between visible & hidden units
\def\numvis{5} % Number if visible units
\def\numhid{4} % Number of hidden units
\begin{tikzpicture}[
node distance=\layersep,
line/.style={shorten >=2pt,shorten <=2pt,>=stealth}
]
\tikzstyle{neuron}=[circle,fill=black!25,minimum size=21pt,inner sep=0pt];
\tikzstyle{visible neuron}=[neuron];
\tikzstyle{hidden neuron}=[neuron];
\tikzstyle{annot}=[text width=4em];
% Iterate over visible units
\foreach \name / \y in {1,...,\numvis}
\node[visible neuron] (V\name) at (\y,0) {$v_\y$};
% Iterate over hidden units
\foreach \name / \y in {1,...,\numhid}
% Calculate the appropriate offset for the hidden unit based on the
% number of visible units.
\pgfmathparse{\y + (\numvis - \numhid) * 0.5}
\node[hidden neuron] (H\name) at (\pgfmathresult, \layersep) {$h_\y$};
% Draw a a line between each unit
\foreach \source in {1,...,\numvis}
\foreach \dest in {1,...,\numhid}
\draw[line] (V\source) -- (H\dest);
% use if/then/else to decide where to draw the labels
\ifthenelse{\numvis > \numhid}
{
\node[annot,left of=V1, node distance=1.5cm] (hl) {Visible layer};
\node[annot,above of=hl] {Hidden layer};
}
{
\node[annot,left of=H1, node distance=1.5cm] (hl) {Hidden layer};
\node[annot,below of=hl] {Visible layer};
}
\end{tikzpicture}
\label{fig:rbm}
\caption{Restricted Boltzmann with \numvis{} visible units and \numhid{} hidden units.}
\end{figure}
答案1
如果从节点标签声明中删除$v_\y$,$h_\y$
带括号的部分{<node label>}
,则节点将只填充而没有任何标签。