【学习经验分享NO.15】python画Sigmoid,ReLU,Tanh等激活函数

文章目录

  • 前言
  • 一、激活函数介绍
    • 1. Sigmoid
    • 2. tanh
    • 3. ReLU
  • 二、实现代码
  • 三、曲线图展示
  • 总结


前言

大论文理论部分需要介绍激活函数,需要自己贴图,用python画图比matlab好很多,推荐,可以根据自己的需要对代码进行注释得到相应的激活函数曲线,暂时编写了三种论文常见的激活函数代码,后续会进行更新其他激活函数画图的代码。如果有帮助,请收藏关注一下我吧,如果有更多的需求欢迎私信我


一、激活函数介绍

1. Sigmoid

sigmoid 是使用范围最广的一类激活函数,具有指数函数形状,它在物理意义上最为接近生物神经元,是一个在生物学中常见的S型的函数,也称为S型生长曲线。此外,(0, 1) 的输出还可以被表示作概率,或用于输入的归一化,代表性的如Sigmoid交叉熵损失函数。
【学习经验分享NO.15】python画Sigmoid,ReLU,Tanh等激活函数_第1张图片

2. tanh

tanh在sigmoid基础上做出改进,与sigmoid相比,tanh输出均值为0,能够加快网络的收敛速度。然而,tanh同样存在梯度消失现象。
在这里插入图片描述

3. ReLU

ReLU是针对sigmoid与tanh中存在的梯度消失问题提出的激活活函数。由于ReLU在x大于0时梯度保持不变,从而解决了tanh中存在的梯度消失现象。但是,在训练过程中,当x进入到小于0的范围时,激活函数输出一直为0,使得网络无法更新权重,出现了“神经元死亡”现象。同时,与sigmoid相似,ReLU输出均值大于0,同样存在偏移现象。
在这里插入图片描述

二、实现代码


		import math
import numpy as np
import matplotlib.pyplot as plt

# set x's range
x = np.arange(-10, 10, 0.1)
y1 = 1 / (1 + math.e ** (-x))  # sigmoid
# y11=math.e**(-x)/((1+math.e**(-x))**2)
y11 = 1 / (2 + math.e ** (-x)+ math.e ** (x))  # sigmoid的导数
y2 = (math.e ** (x) - math.e ** (-x)) / (math.e ** (x) + math.e ** (-x))  # tanh
y22 = 1-y2*y2  # tanh函数的导数
y3 = np.where(x < 0, 0, x)  # relu
y33 = np.where(x < 0, 0, 1)  # ReLU函数导数
plt.xlim(-4, 4)
plt.ylim(-1, 1.2)
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))

# Draw pic
#plt.plot(x, y1, label='Sigmoid', linestyle="-", color="black")
#plt.plot(x, y11, label='Sigmoid derivative', linestyle="-", color="blue")

#plt.plot(x, y2, label='Tanh', linestyle="-", color="black")
#plt.plot(x, y22, label='Tanh derivative', linestyle="-", color="blue")

plt.plot(x, y3, label='Tanh', linestyle="-", color="black")
plt.plot(x, y33, label='Tanh derivative', linestyle="-", color="blue")



# Title
plt.legend(['Sigmoid', 'Tanh', 'Relu'])
#plt.legend(['Sigmoid', 'Sigmoid derivative'])  # y1 y11
#plt.legend(['Tanh', 'Tanh derivative'])  # y2 y22
plt.legend(['Relu', 'Relu derivative'])  # y3 y33

#plt.legend(['Sigmoid', 'Sigmoid derivative', 'Relu', 'Relu derivative', 'Tanh', 'Tanh derivative'])  # y3 y33
# plt.legend(loc='upper left')  # 将图例放在左上角

# save pic
# plt.savefig('plot_test.png', dpi=100)
plt.savefig(r"./")

# show it!!
plt.show()

三、曲线图展示

【学习经验分享NO.15】python画Sigmoid,ReLU,Tanh等激活函数_第2张图片
【学习经验分享NO.15】python画Sigmoid,ReLU,Tanh等激活函数_第3张图片
【学习经验分享NO.15】python画Sigmoid,ReLU,Tanh等激活函数_第4张图片

总结

本文介绍Sigmoid,ReLU,Tanh这三种常见的激活函数及利用python画图代码,后续会持续更新,有帮助也请免费点个小小的收藏吧,有更多的需求帮助可关注私信我。关注即免费获取大量人工智能学习资料。

你可能感兴趣的:(学习经验分享,python,学习,开发语言)