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

yizhihongxing

下面是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 docutils文档编译过程方法解析

    Python docutils文档编译过程方法解析 1. 引言 Python docutils是一个强大的文档工具,它可以将文本文件转换成多种格式,如HTML、LaTeX、ODT和PDF等。在本文中,我们将详细讲解Python docutils文档编译过程及其方法解析,包括准备工作、安装、使用及示例说明等。 2. 准备工作 在开始之前,我们需要做一些准备工作…

    python 2023年6月5日
    00
  • Python 编码处理-str与Unicode的区别

    Python 是一种支持 Unicode 的编程语言,然而在 Python 2 中,存在一个字符串数据类型 str,它是 byte 字节类型的字符串。Python 3 中则将 byte 字节类型的字符串从 str 中分离出去,成为了单独的 bytes 类型。 因此,在 Python 2 中,需要特别处理编码问题,而在 Python 3 中则相对简单。下面将详…

    python 2023年5月20日
    00
  • python随机模块random使用方法详解

    Python随机模块random使用方法详解 在Python中,random模块是一个非常常用的模块,它可以帮助我们生成随机数、随机字符串、随机选择等。本文详细介绍如何Python的random模块,包括如何生成随数、如何生成随机字符串、如何进行随机选择。 生成随机数 在Python中,我们可以使用random模块的randint()函数、uniform()…

    python 2023年5月14日
    00
  • Python实现matplotlib显示中文的方法详解

    在Python中使用Matplotlib库绘制图表时,如果需要显示中文,需要进行一些额外的配置。本文将详细讲解Python实现Matplotlib显示中文的方法。 方法一:使用中文字体 Matplotlib默认使用英文字体,如果需要显示中文,可以使用中文字体。以下是一个使用中文字体的示例: import matplotlib.pyplot as plt fr…

    python 2023年5月15日
    00
  • python字典中get()函数的基本用法实例

    下面我将为您详细讲解 Python 字典中 get() 函数的基本用法和实例。 什么是 Python 字典? 在了解 get() 函数前,我们先来了解一下 Python 字典。Python 字典是一种无序的、可变的、映射类型的数据结构,通常用于存储键值对. Python 字典由花括号 {}、表达式组成,表达式中每个元素都是一个键值对,键和值之间用冒号 : 分…

    python 2023年5月13日
    00
  • 浅谈Python几种常见的归一化方法

    浅谈Python几种常见的归一化方法 在机器学习中,归一化是一种常用的数据预处理技术,其目的是将不同量纲的特征值缩放到相同的范内,以便更好地进行模型训练和预测。本文将介绍Python中几种常见的归一化方法,并提供两个示例说明。 1. Min-Max归一化 Min-Max归一化是一种常用的线性归一化方法,其公式如下: $${norm} = \frac{x – …

    python 2023年5月14日
    00
  • Python tkinter中label控件动态改变值问题

    下面是Python tkinter中label控件动态改变值问题的完整攻略: 1. 简介 在Python的图形界面开发中,我们经常需要控件来显示一些信息,比如说标签(Label)控件。但是,有时候我们需要动态更新标签控件的值,比如说显示当前时间或进度等。这时候,如何实现标签控件的动态改变值,就成为了我们需要解决的问题。 在Python的tkinter中,我们…

    python 2023年6月13日
    00
  • Python3爬虫学习之爬虫利器Beautiful Soup用法分析

    Python3爬虫学习之爬虫利器Beautiful Soup用法分析 介绍 在Python3中,爬虫领域有许多实用的工具,而Beautiful Soup就是其中一款非常常用的解析库。 环境配置 在使用Beautiful Soup之前,需要先安装: pip install beautifulsoup4 基本语法 在使用Beautiful Soup解析网页前,需…

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