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基础教程之正则表达式基本语法以及re模块

    Python基础教程之正则表达式基本语法以及re模块 正则表达式是一种强大的工具,可以用于匹配、查找和替换文本中的模式。Python中,re模块提供一系列函数来操作正则表达式。本攻略将详细讲解正则表达式的基本语法、常用符号以及re模块的常用方法,包括search()、match()、findall()、sub()。 正则表达式基本语法 正则表达式由普通字符和…

    python 2023年5月14日
    00
  • python使用pip安装SciPy、SymPy、matplotlib教程

    Python是一门十分流行的编程语言,很多科学计算方面的任务经常会用到一些常用的库,例如SciPy、SymPy和matplotlib。这些库可以为科学家和工程师提供强大的计算和可视化能力。在Python中,使用pip(Python的包管理器)可以很方便地安装这些库。下面是使用pip安装这些库的简单教程。 前提条件 在开始安装这些库之前,必须先安装Python…

    python 2023年5月13日
    00
  • pandas中按行或列的值对数据排序的实现

    下面我将为你详细讲解如何在pandas中按行或列的值对数据进行排序的实现,包括以下两个方面: 1.按列排序 2.按行排序 我们先来看按列排序的实现。 按列排序的实现: Pandas中提供了sort_values()方法用于对数据框进行排序。sort_values()方法有两个参数可以控制排序,一个是by,一个是ascending。by表示按某列排序,asce…

    python 2023年5月13日
    00
  • Python实现的rsa加密算法详解

    Python实现的RSA加密算法详解 RSA加密算法是一种非对称加密算法,它的安全性基于大数分解的困难性。在Python中,可以使用pycryptodome库来实现RSA加密法。本文将细讲解Python实现的RSA加密算法过程,并提供两个示例说明。 RSA加密算法原理 加密算法的基本原理是利用两个大质的乘积作为公钥,其中一个大质数作为私钥通过数学运算实现加密…

    python 2023年5月13日
    00
  • 详解python模块pychartdir安装及导入问题

    首先我们来介绍一下Python模块Pychartdir。 Pychartdir是一个强大的Python图表库,可以用于生成多种类型的图表,例如线性图、多项式图、曲线图、区域图、柱状图、堆积柱状图、饼状图、甘特图、散点图、气泡图、金融图和地图等。它的目标是提供一个功能强大,易于使用的图表库,同时也兼容多个操作系统和编程语言。 现在我们来讲解一下Pychartd…

    python 2023年5月13日
    00
  • 11行Python代码实现解密摩斯密码

    下面是详细的攻略: 1.了解摩斯密码 摩斯密码是一种用点(·)和线(–)作为符号,用于传输字母、数字和标点符号的电报代码。点和线的不同排列组合代表不同的字符。例如,字母A的摩斯码是·—,字母B的摩斯码是—···。 2.理解代码思路 这段Python代码使用了一个字典来存储每个字符所对应的摩斯码,然后使用字符串处理方法join()和split()来实现编码和解…

    python 2023年5月20日
    00
  • PyQT5速成教程之Qt Designer介绍与入门

    标题:PyQT5速成教程之Qt Designer介绍与入门 简介 PyQT5 是一个用于创建 GUI 应用程序的 Python 框架。它集成了 Qt 库,可以帮助开发人员快速地创建跨平台的 GUI 应用程序,并且它使用 Python 语言,这使得它易于学习和使用。在本篇文章中,我们将介绍 PyQT5 的一个重要部分 — Qt Designer,以及如何使用…

    python 2023年6月3日
    00
  • Python使用urllib模块对URL网址中的中文编码与解码实例详解

    Python中的urllib模块提供了一个简单的方法来处理URL。其中的quote和unquote函数可以实现URL编解码。在使用urllib处理URL时,由于URL中可能存在中文等特殊字符,需要对URL中的中文进行编码和解码。下面将详细介绍Python使用urllib模块对URL网址中的中文编码与解码实例。 urllib中的quote函数 quote函数的…

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