Я пытаюсь создать простую структуру нейронной сети и имею следующее:
\def\layersep{2.5cm}
\begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep]
\tikzstyle{every pin edge}=[<-,shorten <=1pt]
\tikzstyle{neuron}=[circle,draw=black!80,thick,minimum size=17pt,inner
sep=0pt]
\tikzstyle{annot} = [text width=4em, text centered]
\foreach \name / \y in {1,...,3}
\path[yshift=0.5cm]
node[neuron] (H-\name) at (\layersep,-\y cm) {$x_\y$};
\node[neuron,pin={[pin edge={->}]right:$h_\theta(x)$}, right of=H-2] (O) {};
\foreach \source in {1,...,3}
\path (H-\source) edge (O);
\end{tikzpicture}
Что при рендеринге дает следующее:
Я хочу иметь возможность маркировать \path
, новезде, куда я ни смотрелговорит только о маркировке a \draw
или \node
. Я думал, что я должен иметь возможность добавить:
\path (H-\source) edge (O) {Label Text};
Или установите label
атрибут в ребре:
\path (H-\source) edge[label=Label Text] (O);
Но, похоже, это не работает.
Я понимаю, что этот сегмент:
\foreach \source in {1,...,3}
\path (H-\source) edge (O);
устанавливает края. Я также пробовал создать новый node
внутри цикла, но не был уверен, как его расположить относительно края, потому что у края нет идентификатора.
Большое спасибо за Вашу помощь!
решение1
Посмотрите синтаксис основных команд tikz в каком-нибудь руководстве. Чтобы добавить метки, вам понадобится node
. Например, вы можете иметь стрелки с метками, используя
\draw[->] (H-\source) -- node[above]{a\source} (O);
или
\path (H-\source) edge node[above]{a\source} (O);
\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\begin{document}
\def\layersep{2.5cm}
\begin{tikzpicture}%
[shorten >=1pt,->,draw=black!50, node distance=\layersep,
every pin edge/.style={<-,shorten <=1pt},
neuron/.style={circle,draw=black!80,thick,minimum size=17pt,inner
sep=0pt},
annot/.style = {text width=4em, text centered}
]
\foreach \name / \y in {1,...,3}
\node[neuron,yshift=0.5cm] (H-\name) at (\layersep,-\y cm) {$x_\y$};
\node[neuron,pin={[pin edge={->}]right:$h_\theta(x)$}, right of=H-2] (O) {};
\foreach \source in {1,...,3}
\draw[->] (H-\source) -- node[above]{a\source} (O);
\end{tikzpicture}
\end{document}
решение2
Позвольте мне преобразовать мои комментарии в ответ:
например \path (H-\source) edge ["Текст метки"] (O); (необходима библиотека кавычек) или \path (H-\source) edge node[выше] {Текст метки} (O); ... это то, что вы ищете?
Рассмотрим первые возможности, библиотеку chains
и positioning
позиционирование нейронов, а также правильный синтаксис для этого, ваш MWE станет следующим:
\documentclass[tikz, border=2mm]{standalone}
\usetikzlibrary{chains, positioning, quotes}
\begin{document}
\def\layersep{12mm}
\begin{tikzpicture}[shorten >=1pt, ->, draw=black!50,
node distance = \layersep and 2*\layersep,
start chain = going below,
every pin edge/.style = {<-,shorten <=1pt},
neuron/.style = {circle,draw=black!80, thick,
minimum size=17pt, inner sep=0pt,
on chain},
annot/.style = {text width=4em, text centered},
every edge quotes/.style = {above,font=\footnotesize}
]
\foreach \y in {1,2,3}
\node (H-\y) [neuron] {$x_\y$};
\node (O) [neuron,pin={[pin edge={->}]right:$h_\theta(x)$},
right=of H-2] {};
\foreach \y in {1,2,3}
\draw[->] (H-\y) edge [above,"a\y"] (O);
\end{tikzpicture}
\end{document}
Я почти уверен, что несколько дней назад я написал ответ на очень похожий вопрос.