Python实现绘制多种激活函数曲线详解

下面是Python实现绘制多种激活函数曲线的详解攻略。

概述

神经网络中的激活函数对模型的性能具有很大的影响,常用的激活函数有sigmoid、ReLU、tanh等。在实际应用中,我们往往需要对各种激活函数进行模拟和可视化,以便对其进行研究和优化。在这里,我们将详细讲解如何使用Python实现绘制多种激活函数的曲线图。

任务

绘制如下几种激活函数的曲线图:

  1. sigmoid函数
  2. tanh函数
  3. ReLU函数
  4. LeakyReLU函数
  5. ELU函数

实现

准备工作

在绘制激活函数的曲线图前,我们需要先导入必要的库,包括numpymatplotlib。在绘制曲线图时,我们要对横坐标和纵坐标进行区分,因此需要创建两个数组,分别作为横坐标和纵坐标。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-5, 5, 200)
y = np.zeros_like(x)

我们使用linspace函数创建了一个横坐标的数组,其范围为-5到5,共有200个点。而纵坐标的数组初始化为全0数组,后面我们会用不同的激活函数替换其元素值。

sigmoid函数

sigmoid函数的数学公式为:

$$
\sigma(x) = \frac{1}{1+e^{-x}}
$$

在Python中,我们可以使用numpy库的exp函数来计算$e^{-x}$,然后再使用简单的算术计算得出结果。绘制sigmoid函数的代码如下:

y = 1 / (1 + np.exp(-x))
plt.plot(x, y)
plt.title('Sigmoid')
plt.show()

tanh函数

tanh函数的数学公式为:

$$
\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}
$$

在Python中,我们同样可以使用numpy库的函数来计算,绘制tanh函数的代码如下:

y = np.tanh(x)
plt.plot(x, y)
plt.title('tanh')
plt.show()

ReLU函数

ReLU函数的数学公式为:

$$
\mathrm{ReLU}(x) = \max(0, x)
$$

在Python中,ReLU函数的实现非常简单,我们只需要将小于0的数全部改为0即可。绘制ReLU函数的代码如下:

y = np.maximum(0, x)
plt.plot(x, y)
plt.title('ReLU')
plt.show()

LeakyReLU函数

LeakyReLU函数是ReLU函数的一种变种,它在负值区域使用一个小的斜率。LeakyReLU函数的数学公式为:

$$
\mathrm{LeakyReLU}(x) = \begin{cases}
x, & x > 0 \
\alpha x, & x \leq 0
\end{cases}
$$

其中,$\alpha$是一个小的斜率,可以设置为0.01或0.3等。在Python中,我们可以使用numpy库的where函数实现LeakyReLU函数。绘制LeakyReLU函数的代码如下:

y = np.where(x > 0, x, 0.01 * x)
plt.plot(x, y)
plt.title('LeakyReLU')
plt.show()

ELU函数

ELU函数是一种近年来提出的激活函数,它结合了ReLU和sigmoid函数的优点,在模型训练时表现较好。ELU函数的数学公式为:

$$
\mathrm{ELU}(x) = \begin{cases}
x, & x > 0 \
\alpha(e^x-1), & x \leq 0
\end{cases}
$$

其中,$\alpha$是一个小的斜率,可以设置为1等。在Python中,我们同样可以使用numpy库函数实现ELU函数。绘制ELU函数的代码如下:

y = np.where(x > 0, x, np.exp(x) - 1)
plt.plot(x, y)
plt.title('ELU')
plt.show()

示例说明

我们可以通过修改上述代码中的参数,比如修改横坐标的范围、线条的颜色和类型等,来实现不同的曲线。下面以绘制三种函数为例进行说明。

绘制不同线条的sigmoid函数

我们可以同时绘制多条线条来对比不同的sigmoid函数,比如在同一张图中绘制黑色、红色、绿色的曲线。修改sigmoid函数的代码如下:

y1 = 1 / (1 + np.exp(-x))
y2 = 1 / (1 + np.exp(-2*x))
y3 = 1 / (1 + np.exp(-0.5*x))
plt.plot(x, y1, 'k', label='sigmoid(x)')
plt.plot(x, y2, 'r--', label='sigmoid(2x)')
plt.plot(x, y3, 'g-.', label='sigmoid(0.5x)')
plt.title('Sigmoid')
plt.legend()
plt.show()

绘制多种函数在同一张图中的对比

我们可以将多种函数绘制在同一张图中,对比它们的曲线趋势,以便更直观地了解各种激活函数的特点。修改代码如下:

y_tanh = np.tanh(x)
y_relu = np.maximum(0, x)
y_lrelu = np.where(x > 0, x, 0.01 * x)
y_elu = np.where(x > 0, x, np.exp(x) - 1)
plt.plot(x, y_tanh, 'b', label='tanh')
plt.plot(x, y_relu, 'r', label='ReLU')
plt.plot(x, y_lrelu, 'g', label='LeakyReLU')
plt.plot(x, y_elu, 'm', label='ELU')
plt.title('Activation Functions')
plt.legend()
plt.show()

总结

这里给出了使用Python实现绘制多种激活函数的曲线的详细攻略,覆盖了Sigmoid、tanh、ReLU、LeakyReLU和ELU五种常用的激活函数。通过对激活函数的详细讲解,我们不仅可以更好地理解各种激活函数的特点,还可以优化神经网络模型,提高模型的性能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现绘制多种激活函数曲线详解 - Python技术站

(0)
上一篇 2023年6月5日
下一篇 2023年6月5日

相关文章

  • Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法

    这里是Python中出现IndentationError: unindent does not match any outer indentation level错误的解决方法攻略。 什么是IndentationError错误 IndentationError错误发生在Python代码中缩进格式不正确的情况下。这种错误通常会导致代码无法正常运行,需要修复缩进…

    python 2023年5月13日
    00
  • Python 字典(Dictionary)详细介绍

    Python 字典 (Dictionary) 详细介绍 什么是字典 在 Python 中,字典 (Dictionary) 是一种无序的键值对 (key-value pair) 集合。字典使用键来访问其对应的值,键和值可以是任意类型的数据。 创建字典 我们可以使用以下两种方式来创建一个字典。 直接使用大括号 我们可以使用大括号 {} 来创建一个空的字典,然后逐…

    python 2023年5月13日
    00
  • Python 高阶函数的装饰器

    下面我会详细讲解Python高阶函数的装饰器使用方法的完整攻略。 什么是装饰器 装饰器是一种可以在不修改原函数的情况下,给函数增加新的功能且可以动态修改功能的函数。在Python中,装饰器是一种语法糖,它通过@符号将一个函数名放在一个特定的函数上面来实现。 Python高阶函数的装饰器使用方法 使用装饰器的过程包括两个步骤:定义装饰器函数和使用装饰器函数。 …

    python-answer 2023年3月25日
    00
  • python中decimal模块的具体使用

    Python的Decimal模块提供浮点数的高精确度计算,适合业务场景需要高精度的场景,例如财务、科学计算等。 Decimal模块的简介 Decimal模块提供了一种转换浮点数为定点数的方式,其中精度在计算过程中保持不变,解决了浮点数在精度计算上的缺陷。 因为Python浮点数使用IEEE 754标准实现,因此在进行带有小数点的浮点数计算时,无法准确表示某些…

    python 2023年6月3日
    00
  • Python异常之常见的Bug类型解决方法

    在Python编程中,我们经常会遇到各种各样的异常和Bug。以下是常见的Python异常和Bug类型及其解决方法的完整攻略: 1. 语法错误 语法错误是最常见Python异常之一。当我们在编写代码时,如果出语法错误,Python解释器将无法解释代码并抛出异常。通常语法错误是由于拼写错误、缺少括号或引号等简单的错误所致。我们可以使用以下方法来解决语法错误: 仔…

    python 2023年5月13日
    00
  • Python3基础教程之递归函数简单示例

    《Python3基础教程之递归函数简单示例》教程旨在帮助初学者掌握Python3递归函数的基本使用方法。 什么是递归函数? 递归是一种调用自身的编程技巧,通俗来讲就是“自己调用自己”。递归函数是使用递归技巧的函数,它将一个问题拆解成多个相似的子问题去解决,然后将结果合并起来。Python3语言中函数的调用深度默认为100层,深度超过这个限制会引发递归深度错误…

    python 2023年6月5日
    00
  • Python支持异步的列表解析式

    Python支持异步的列表解析式,又被称为异步列表推导式,它是一种基于 asyncio 库的高效异步编程方法。使用异步列表解析式,可以在单个代码块内同时生成多个异步任务,并异步地执行它们。下面是使用异步列表解析式的基本步骤: 步骤1:导入 asyncio 库 异步列表解析式需要使用 asyncio 库,因此要在代码文件最开始处导入该库: import asy…

    python 2023年5月14日
    00
  • 使用PyQtGraph绘制精美的股票行情K线图的示例代码

    使用PyQtGraph绘制股票K线图的攻略可以分为以下几个步骤: 安装PyQtGraph PyQtGraph是一个用于科学计算的Python图形库,支持多种图形类型,如曲线图、散点图和3D图。可以通过在命令行中输入以下命令安装: pip install pyqtgraph 导入所需库和数据 在代码中导入所需的PyQtGraph库和其他必要的库。然后,使用pa…

    python 2023年6月6日
    00
合作推广
合作推广
分享本页
返回顶部