如何使用 tikzpicture 绘制 ELU

如何使用 tikzpicture 绘制 ELU

我正在尝试绘制 ELU 图。但我不知道公式应该是什么。如果有人能帮忙,我将不胜感激。

这就是我的代码。

    \begin{figure}[H]
    \centering
        \begin{tikzpicture}
            \begin{axis}%
                [
                    domain=-3:5,
                    legend pos=north west,  
                    style={font=\scriptsize,row sep=5cm,/tikz/every odd column/.append style={column sep=0.01cm}
                    },
                ]
                \addplot%
                [
                    blue,%
                    mark=none,
                    samples=100,
                    domain=-5:5,
                ]
                (x,{(x>=-2)*((exp(x))-1)});
                \legend{$
                            R(z)=\left \{
                            \begin{tabular}{ccc}
                            z & z \textgreater 0  \\
                            \alpha.(e^z–1) & z \leq 0  
                            \end{tabular}
                            \right \}
                            $
                        }
            \end{axis}

        \end{tikzpicture}

    \label{fig:ELU}
    \caption{ELU}
\end{figure}

在此处输入图片描述

答案1

我对这些东西不太熟悉, https://en.wikipedia.org/wiki/Rectifier_(neural_networks)#ELUsELU 的定义与你展示的图不同。我猜你是在追求

       \addplot%
            [
                blue,%
                mark=none,
                samples=100,
                domain=-3:2,
            ]
            (x,{
                (x>=-2) * (exp(x)-1) + % this applies when x is \geq to the threshold value, -2
                (x<-2)  * (x+(exp(-2)+1) % this applies when x is less
                });

其中第二部分中的额外项是函数从两侧接近相同值所需的项。不过,我可能会对其进行一些参数化,方法是定义一个函数并为 -2 创建一个宏,例如像下面的代码一样。

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\usepackage{amsmath}

\begin{document}
\begin{tikzpicture}[
  declare function={ % define a function for the ELU
    a = 1;
    ELU(\x)={a * (exp(\x) - 1)};
    }
]

% a macro for the value where the function changes
\newcommand\ELUThreshold{0}

            \begin{axis}%
                [
                    legend pos=north west,  
                    style={font=\scriptsize,
                           row sep=5cm,
                           /tikz/every odd column/.append style={column sep=0.01cm}
                    },
                ]
                \addplot%
                [
                    blue,%
                    mark=none,
                    samples=100,
                    domain=-3:2,
                ]
                (x,{
                    (x>=\ELUThreshold) * (ELU(x)) + % this applies when x is \geq to the threshold value
                    (x<\ELUThreshold)  * (x+(ELU(\ELUThreshold)-\ELUThreshold) % this applies when x is less
                    });

                % some fine tuning of the legend entry
                \addlegendentry[minimum height=4ex,text depth=1.5ex]{$R(z)=
                            \begin{cases}
                            z & z < \ELUThreshold  \\
                            \alpha (e^z–1) & z \geq \ELUThreshold 
                            \end{cases}
                            $
                        }
            \end{axis}

        \end{tikzpicture}

\end{document} 

答案2

我遇到了同样的问题,只是对该函数使用了两个图。

        \begin{tikzpicture}
        \begin{axis}[
            xmin=-2,
            xmax=2,
            ymin=-2.1,
            ymax=2.1,
            grid=major,
            xlabel={$v$},
            ylabel={$f(v)$},
            legend entries={ReLU,ELU},
            legend pos=south east
            ]
        \addplot[red] coordinates {(-2,0)(0,0)(2,2)};
        % Draws the exp part
        \addplot[blue, domain=-2:0, samples=100] {(exp(x)-1)};
        % Draws the linear part
        \addplot[blue, domain=0:2] {x}; 
        \end{axis}
    \end{tikzpicture}

看起来像这样

答案3

我稍微修改了一下它,这更符合我的需要。但它是基于 Torbjørn T 的推荐。

   \begin{figure}[H]
    \centering
       \begin{tikzpicture}

            \begin{axis}%
                [
                    legend pos=north west,  
                    style={font=\scriptsize,
                    row sep=5cm,
                    /tikz/every odd column/.append style={column sep=0.01cm}
                    },
                ]
                \addplot%
                [
                    blue,%
                    mark=none,
                    samples=100,
                    domain=-4:4,
                ]
                (x,{
                    (x<=0) * (exp(x)-1) +
                    (x>0)  * x
                    });

                \addlegendentry[minimum height=4ex,text depth=1.5ex]{$R(z)=
                            \begin{cases}
                            z & z > \ELUThreshold  \\
                            \alpha (e^z–1) & z \leq \ELUThreshold 
                            \end{cases}
                            $
                        }
            \end{axis}

        \end{tikzpicture}

    \label{fig:ELU}
    \caption{ELU}
\end{figure}

相关内容