![如何控制 wrapfigure 下方的空白?](https://linux22.com/image/409145/%E5%A6%82%E4%BD%95%E6%8E%A7%E5%88%B6%20wrapfigure%20%E4%B8%8B%E6%96%B9%E7%9A%84%E7%A9%BA%E7%99%BD%EF%BC%9F.png)
我目前正在写一篇关于神经网络的学期论文,用 LateX 编写。
我有一个 itemize 环境(具有不同的激活函数),并希望在它们旁边显示函数的图形。为此,我使用 tikz 和 pgfplots 创建了一个坐标系。
这是我的代码:
\documentclass[a4paper, 12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{wrapfig}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\section{Aktivierungsfunktionen}
Neben den Gewichten und dem Bias ist der Output eines Neurons abhängig von seiner Aktivierungsfunktion $\varphi$. Diese dient dazu, den Output des Neurons nicht-linear zu machen. Würde ein neuronales Netz nur lineare Aktivierungsfunktionen nutzen, würde der Nutzen der verschiedenen Layer verloren gehen, da jede Komposition linearer Funktionen als Linearkombination der anderen Funktionen dargestellt werden kann. So hätte man effektiv nur ein Layer, da der Output des Netzes linear abhängig vom Input wäre. Welche Aktivierungsfunktionen in einem Netz verwendet werden, ist abhängig von dem Problem, das es lösen soll.\\
\begin{wrapfigure}{r}{6.5cm}
\begin{center}
\begin{tikzpicture}
\begin{axis}[width=8cm, height=8cm, axis lines=center, xtick={-2,...,2}, ytick={-2,...,2}, xmin=-2, xmax=2, ymin=-2, ymax=2, xlabel=$x$, ylabel=$y$, grid=both, minor tick num=1, legend pos=south east]
\addplot[domain=-3:3, samples=500, line width=1, darkyellow] {x};
\addlegendentry{Identity}
\addplot[domain=-3:3, samples=500, line width=1, red] {1/(1+exp(-x))};
\addlegendentry{Sigmoid}
\addplot[domain=-3:3, samples=500, line width=1, cyan] {(exp(x) - exp(-x))/(exp(x) + exp(-x))};
\addlegendentry{TanH}
\addplot[domain=-3:0, samples=500, line width=1, blue] {0};
\addplot[domain=0:3, samples=500, line width=1, dash pattern=on 5pt off 5pt, blue] {x};
\addlegendentry{ReLU}
\end{axis}
\end{tikzpicture}
\end{center}
\end{wrapfigure}
\noindent Die bekanntesten Aktivierungsfunktionen sind:
\begin{itemize}
\item \textbf{Identity:} Die Identity-Funktion besitzt die Form $f(x)=x$. Allerdings wird sie aus oben genannten Gründen nur in sehr einfachen Modellen verwendet, da die Funktion linear ist.
\item \textbf{Sigmoid:} Die Sigmoid-Funktion wird sehr häufig als Aktivierungsfunktion genutzt. Ihre Output-Werte liegen im Intervall $[0, 1]$. Sie ist definiert als\\ $f(x)=\frac{1}{1 + e^{-x}}$.
\item \textbf{TanH (Tangens Hyperbolicus):} Die TanH-Funktion hat wie die Sigmoid-Funktion einen S-förmigen Graphen. Allerdings liegen ihre Output-Werte im Intervall $[-1, 1]$. Ihre Funktionsgleichung ist $f(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}$.
\item \textbf{Rectifier (ReLU):} Die ReLU-Funktion ist ebenfalls eine sehr häufig genutzte Aktivierungsfunktion. Sie ist im Grunde zweigeteilt: Für $x<=0$ ist sie definiert als $f(x)=0$ und für $x>0$ als $f(x)=x$. Daher liegen ihre Werte im Intervall $[0, \infty)$. Ihre Funktionsgleichung kann auch als $f(x)=max(0, x)$ dargestellt werden.
\item \textbf{Softmax:} Eine Ausnahme stellt die Softmax-Funktion dar. Im Gegensatz zu den anderen genannten Funktionen nimmt sie nicht nur einen Wert als Input, sondern einen Input-Vektor $\Vec{x}$ mit allen Netzinputs eines gesamten Layers. Alle Werte des Output-Vektors $\Vec{o}$ liegen im Intervall $[0, 1]$, wobei sie sich alle zu 1 aufsummieren. Daher kann der Output genutzt werden, um eine Wahrscheinlichkeitsverteilung darzustellen. Aus diesem Grund findet die Softmax-Funktion häufig Verwendung im Output-Layer eines Klassifizierungs-Netzes.
\end{itemize}
\end{document}
我无法将 tikzpicture 放在 itemize 旁边。我尝试使用 wrapfigure,效果还不错……
目前它看起来像这样:https://i.stack.imgur.com/4roXs.jpg
但我希望文本继续位于 tikzpicture(也是 softmax 项)下方,如下所示:https://i.stack.imgur.com/5Jtcr.jpg
编辑:代码现在可以编译了。
答案1
您可以添加要跳过的数字并拆分环境itemize
。请注意,\\
不应使用 来开始新行。
\documentclass[a4paper, 12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{wrapfig}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\hyphenation{ge-nutzt}
\begin{document}
\subsection{Aktivierungsfunktionen}
\label{sec:Aktivierungsfunktionen}
Neben den Gewichten und dem Bias ist der Output eines Neurons abh\"angig von
seiner Aktivierungsfunktion $\varphi$. Diese dient dazu, den Output des Neurons
nicht-linear zu machen. W\"urde ein neuronales Netz nur lineare
Aktivierungsfunktionen nutzen, w\"urde der Nutzen der verschiedenen Layer verloren
gehen, da jede Komposition linearer Funktionen als Linearkombination der anderen
Funktionen dargestellt werden kann. So h\"atte man effektiv nur ein Layer, da der
Output des Netzes linear abh\"angig vom Input w\"are. Welche Aktivierungsfunktionen
in einem Netz verwendet werden, ist abh\"angig von dem Problem, das es l\"osen
soll.
\begin{wrapfigure}[16]{r}[10pt]{7.6cm}
\centering
\begin{tikzpicture}
\begin{axis}[width=8cm, height=8cm, axis lines=center, xtick={-2,...,2}, ytick={-2,...,2}, xmin=-2, xmax=2, ymin=-2, ymax=2, xlabel=$x$, ylabel=$y$, grid=both, minor tick num=1, legend pos=south east]
\addplot[domain=-3:3, samples=500, line width=1, yellow!60!black] {x};
\addlegendentry{Identity}
\addplot[domain=-3:3, samples=500, line width=1, red] {1/(1+exp(-x))};
\addlegendentry{Sigmoid}
\addplot[domain=-3:3, samples=500, line width=1, cyan] {(exp(x) - exp(-x))/(exp(x) + exp(-x))};
\addlegendentry{TanH}
\addplot[domain=-3:0, samples=500, line width=1, blue] {0};
\addplot[domain=0:3, samples=500, line width=1, dash pattern=on 5pt off 5pt, blue] {x};
\addlegendentry{ReLU}
\end{axis}
\end{tikzpicture}
\end{wrapfigure}
\noindent Die bekanntesten Aktivierungsfunktionen sind:
\begin{itemize}
\item \textbf{Identity:} Die Identity-Funktion besitzt die Form $f(x)=x$.
Allerdings wird sie aus oben genannten Gr\"unden nur in sehr einfachen Modellen
verwendet, da die Funktion linear ist.
\item \textbf{Sigmoid:} Die Sigmoid-Funktion wird sehr h\"aufig als
Aktivierungsfunktion genutzt. Ihre Output-Werte liegen im Intervall $[0, 1]$.
Sie ist definiert als $f(x)=\frac{1}{1 + e^{-x}}$.
\end{itemize}
\begin{itemize}
\item \textbf{TanH (Tangens Hyperbolicus):} Die TanH-Funktion hat wie die
Sigmoid-Funktion einen S-f\"ormigen Graphen. Allerdings liegen ihre Output-Werte
im Intervall $[-1, 1]$. Ihre Funktionsgleichung ist
$f(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}$.
\item \textbf{Rectifier (ReLU):} Die ReLU-Funktion ist ebenfalls eine sehr
h\"aufig genutzte Aktivierungsfunktion. Sie ist im Grunde zweigeteilt: F\"ur $x<=0$
ist sie definiert als $f(x)=0$ und f\"ur $x>0$ als $f(x)=x$. Daher liegen ihre
Werte im Intervall $[0, \infty)$. Ihre Funktionsgleichung kann auch als
$f(x)=max(0, x)$ dargestellt werden.
\item \textbf{Softmax:} Eine Ausnahme stellt die Softmax-Funktion dar. Im
Gegensatz zu den anderen genannten Funktionen nimmt sie nicht nur einen Wert als
Input, sondern einen Input-Vektor $\vec{x}$ mit allen Netzinputs eines gesamten
Layers. Alle Werte des Output-Vektors $\vec{o}$ liegen im Intervall $[0, 1]$,
wobei sie sich alle zu 1 aufsummieren. Daher kann der Output genutzt werden, um
eine Wahrscheinlichkeitsverteilung darzustellen. Aus diesem Grund findet die
Softmax-Funktion h\"aufig Verwendung im Output-Layer eines
Klassifizierungs-Netzes.
\end{itemize}
\end{document}
或者
\documentclass[a4paper, 12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{wrapfig}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\hyphenation{ge-nutzt}
\begin{document}
\subsection{Aktivierungsfunktionen}
\label{sec:Aktivierungsfunktionen}
Neben den Gewichten und dem Bias ist der Output eines Neurons abh\"angig von
seiner Aktivierungsfunktion $\varphi$. Diese dient dazu, den Output des Neurons
nicht-linear zu machen. W\"urde ein neuronales Netz nur lineare
Aktivierungsfunktionen nutzen, w\"urde der Nutzen der verschiedenen Layer verloren
gehen, da jede Komposition linearer Funktionen als Linearkombination der anderen
Funktionen dargestellt werden kann. So h\"atte man effektiv nur ein Layer, da der
Output des Netzes linear abh\"angig vom Input w\"are. Welche Aktivierungsfunktionen
in einem Netz verwendet werden, ist abh\"angig von dem Problem, das es l\"osen
soll.
Die bekanntesten Aktivierungsfunktionen sind:
\begin{wrapfigure}[14]{r}[10pt]{7.6cm}
\centering
\begin{tikzpicture}
\begin{axis}[width=8cm, height=8cm, axis lines=center, xtick={-2,...,2}, ytick={-2,...,2}, xmin=-2, xmax=2, ymin=-2, ymax=2, xlabel=$x$, ylabel=$y$, grid=both, minor tick num=1, legend pos=south east]
\addplot[domain=-3:3, samples=500, line width=1, yellow!60!black] {x};
\addlegendentry{Identity}
\addplot[domain=-3:3, samples=500, line width=1, red] {1/(1+exp(-x))};
\addlegendentry{Sigmoid}
\addplot[domain=-3:3, samples=500, line width=1, cyan] {(exp(x) - exp(-x))/(exp(x) + exp(-x))};
\addlegendentry{TanH}
\addplot[domain=-3:0, samples=500, line width=1, blue] {0};
\addplot[domain=0:3, samples=500, line width=1, dash pattern=on 5pt off 5pt, blue] {x};
\addlegendentry{ReLU}
\end{axis}
\end{tikzpicture}
\end{wrapfigure}
~\vspace{-\baselineskip}
\begin{itemize}
\item \textbf{Identity:} Die Identity-Funktion besitzt die Form $f(x)=x$.
Allerdings wird sie aus oben genannten Gr\"unden nur in sehr einfachen Modellen
verwendet, da die Funktion linear ist.
\item \textbf{Sigmoid:} Die Sigmoid-Funktion wird sehr h\"aufig als
Aktivierungsfunktion genutzt. Ihre Output-Werte liegen im Intervall $[0, 1]$.
Sie ist definiert als $f(x)=\frac{1}{1 + e^{-x}}$.
\end{itemize}
\begin{itemize}
\item \textbf{TanH (Tangens Hyperbolicus):} Die TanH-Funktion hat wie die
Sigmoid-Funktion einen S-f\"ormigen Graphen. Allerdings liegen ihre Output-Werte
im Intervall $[-1, 1]$. Ihre Funktionsgleichung ist
$f(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}$.
\item \textbf{Rectifier (ReLU):} Die ReLU-Funktion ist ebenfalls eine sehr
h\"aufig genutzte Aktivierungsfunktion. Sie ist im Grunde zweigeteilt: F\"ur $x<=0$
ist sie definiert als $f(x)=0$ und f\"ur $x>0$ als $f(x)=x$. Daher liegen ihre
Werte im Intervall $[0, \infty)$. Ihre Funktionsgleichung kann auch als
$f(x)=max(0, x)$ dargestellt werden.
\item \textbf{Softmax:} Eine Ausnahme stellt die Softmax-Funktion dar. Im
Gegensatz zu den anderen genannten Funktionen nimmt sie nicht nur einen Wert als
Input, sondern einen Input-Vektor $\vec{x}$ mit allen Netzinputs eines gesamten
Layers. Alle Werte des Output-Vektors $\vec{o}$ liegen im Intervall $[0, 1]$,
wobei sie sich alle zu 1 aufsummieren. Daher kann der Output genutzt werden, um
eine Wahrscheinlichkeitsverteilung darzustellen. Aus diesem Grund findet die
Softmax-Funktion h\"aufig Verwendung im Output-Layer eines
Klassifizierungs-Netzes.
\end{itemize}
\end{document}