您好,登錄后才能下訂單哦!
這篇文章給大家介紹python中如何使用matplotlib模塊,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
常見的激活函數效果圖如下:
代碼區:
#!E:\anaconda\python.exe
# -*-coding:utf-8 -*-
"""
功能:繪制激活函數 常見的激活函數有sigmoid、tanh、ReLU、eru、leaky ReLU、softmax
時間:2019/10/6
"""
from matplotlib import pyplot as plt
import numpy as np
# 1.sigmoid函數的表達式:f(x) = 1/(1+e^-x)
x = np.linspace(-6,6,200)
def sigmoid(x):
y = 1/(1+np.exp(-x))
return y
# 2.tanh的函數表達式: f(x) = (e^x-e^-x)/(e^x+e-x)
def tanh(x):
y = (np.exp(x) - np.exp(-x))/(np.exp(x) + np.exp(-x))
return y
#3. ReLu 的函數表達式: f(x)= 當x<0 f(x)0 當x>=0 f(x) = x
def ReLU(x):
y = []
for i in x:
if i >= 0:
y.append(i)
else:
y.append(0)
return y
#return np.maximum(x,[0]*100) #可以利用np中的maximum方法表示,也可以用上述方法
#4.elu 的函數表達式 f(x) x>=0 f(x)=x x<0 f(x) =a(e^x -1)
def elu(x,a):
y = []
for i in x:
if i>=0:
y.append(i)
else:
y.append(a*(np.exp(i)-1))
return y
#5.leaky ReLU 的函數表達式 x>=0 f(x)=x x<0 f(x) =0.01x
def LReLU(x):
y = []
for i in x:
if i>=0:
y.append(i)
else:
y.append(0.01*i)
return y
# softmax激活函數 softmax的表達式為:輸入信號的指數函數除以所有輸入信號的指數和
def softmax(x):
c = np.max(x) #解決溢出問題
exe_x = np.exp(x)
exe_s = np.sum(exe_x)
y = exe_x/exe_s
return y
plt.subplot(1,2,1) #畫子圖
plt.plot(x,sigmoid(x),c="red",lw="2",label = "sigmiod")
plt.plot(x,tanh(x),c="blue",lw="2",label = "tanh")
plt.plot(x,softmax(x),c="yellow",lw="2",label = "softmax")
plt.gca().spines["bottom"].set_position(("data",0)) #將函數圖像移動到x軸(0,0)
plt.gca().spines["left"].set_position(("data",0)) #將函數圖形移動到y軸(0,0)
plt.xlabel("x軸",fontproperties="SimHei")
plt.ylabel("y軸",fontproperties="SimHei")
plt.title("激活函數",fontproperties="SimHei")
plt.legend(loc="best")
plt.subplot(1,2,2)
plt.plot(x,ReLU(x),c="blue",lw="2",label="ReLU")
plt.plot(x,elu(x,0.1),c="yellow",lw="2",label="elu")
plt.plot(x,LReLU(x),c="green",lw="2",label="LReLU")
plt.gca().spines["bottom"].set_position(("data",0))
plt.gca().spines["left"].set_position(("data",0))
plt.xlabel("x軸",fontproperties="SimHei")
plt.ylabel("y軸",fontproperties="SimHei")
plt.title("激活函數",fontproperties="SimHei")
plt.legend(loc="best")
plt.show()
**
sigmoid激活函數:
**
優點:1.輸出[0,1]之間,利用前向傳播
2.連續函數,方便求導
缺點:1.容易產生梯度消失。一般5層以內就會產生梯度消失的現象。
2.輸出不是以零為中心
3.大量運算時相當耗時(由于是冪函數)
**
tanh激活函數:
**
優點:1.輸出[-1,1]之間,利用前向傳播
2.連續函數,方便求導
3.輸出以零為中心
缺點:1.容易產生梯度消失。一般5層以內就會產生梯度消失的現象。
2.大量數據運算時相當耗時(由于是冪函數)
**
ReLU激活函數:
**
優點:1.解決了正區間梯度消失問題
2.易于計算
3.收斂速度快
缺點:1.輸出不是以零為中心
2.某些神經元不能被激活,導致參數永遠不能更新
**無錫人流醫院哪家好 http://www.bhnnkyy120.com/
Leaky ReLU激活函數:
**
優點:
1.解決了正區間梯度消失問題
2.易于計算
3.收斂速度快
4.解決了某些神經元不能被激活
缺點:輸出不是以零為中心
**
elu激活函數:
**
優點:
1.解決了正區間梯度消失問題
2.易于計算
3.收斂速度快
4.解決了某些神經元不能被激活
5.輸出的均值為0
缺點:輸出不是以零為中心
softmax激活函數:
**
一般用在分類的輸出層作為激活函數
優點:
1.輸出在[0,1]之間,可以當初概率
缺點:
在實際問題中,由于冪運算需要時間,而且softmax不會影響各元素的大小,因此輸出層的softmax激活函數一般被省略。
關于python中如何使用matplotlib模塊就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。