日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

神经网络常用激活函数

發布時間:2023/11/27 生活经验 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 神经网络常用激活函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

激活函數:只是一個抽象概念,使用激活函數時為了讓中間輸出多樣化,能夠處理更復雜的問題。

激活函數給神經元引入了非線性因素,若無激活函數,則每一層最后輸出的都是上一層輸入的線性函數,不管加多少層神經網絡,我們最后的輸出也只是最開始輸入數據的線性組合而已。當加入多層神經網絡時,就可以讓神經網絡擬合任何線性函數及非線性函數,從而使得神經網絡可以適用于更多的非線性問題,而不僅僅是線性問題。

>> 01 sigmoid函數

????????

  • ?sigmoid函數是機器學習中的一個比較常用的函數,用于隱層神經元輸出,取值范圍為(0,1);
  • 它可以將一個實數映射到(0,1)的區間,用來做二分類,而且是單調遞增,比較容易優化;
  • 在特征相差比較復雜或是相差不是特別大時效果比較好;
  • 優點:平滑、易于求導;
  • 缺點:①收斂比較慢,反向傳播求誤差梯度時,求導涉及除法;②Sigmoid是軟飽和,反向傳播時,容易產生梯度消失,從而無法完成深層網絡的訓練;(x趨于無窮大的時候,也會使導數趨于0)Sigmoid函數并不是以(0,0)為中心點;?
from matplotlib import pyplot as plt
import numpy as np
import mathdef sigmoid_function(x_list):fx = []for x in x_list:# print(x)fx.append(1 / (1 + np.exp(-x)))return fxif __name__ == '__main__':x_list = np.arange(-10, 10, 0.01)fx = sigmoid_function(x_list)ax = plt.gca()                                     # get current axis 獲得坐標軸對象ax.spines['right'].set_color('none')               # 將右邊的兩條邊顏色設置為空ax.spines['top'].set_color('none')                 # 將上邊的兩條邊顏色設置為空ax.xaxis.set_ticks_position('bottom')              # 指定下邊的邊為 x 軸ax.yaxis.set_ticks_position('left')                # 指定左邊的邊為 y 軸ax.spines['bottom'].set_position(('data', 0))      # 指定的x軸綁定到0這個點ax.spines['left'].set_position(('data', 0))        # 指定的y軸綁定到0這個點plt.plot(x_list, fx, label='Sigmoid ', linestyle="-")  # label為標簽plt.legend(['Sigmoid '])plt.title('Sigmoid  Function')plt.show()

??>> 02 tanh函數

  • 優點:①函數輸出以(0,0)為中心;②收斂速度相對于Sigmoid更快;
  • 缺點:tanh函數并沒有解決sigmoid梯度消失的問題
from matplotlib import pyplot as plt
import numpy as np
import mathdef tanh_function(x_list):fx = []for x in x_list:fx.append((np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x)))return fxif __name__ == '__main__':x_list = np.arange(-10, 10, 0.01)fx = tanh_function(x_list)ax = plt.gca()                                     # get current axis 獲得坐標軸對象ax.spines['right'].set_color('none')               # 將右邊的兩條邊顏色設置為空ax.spines['top'].set_color('none')                 # 將上邊的兩條邊顏色設置為空ax.xaxis.set_ticks_position('bottom')              # 指定下邊的邊為 x 軸ax.yaxis.set_ticks_position('left')                # 指定左邊的邊為 y 軸ax.spines['bottom'].set_position(('data', 0))      # 指定的x軸綁定到0這個點ax.spines['left'].set_position(('data', 0))        # 指定的y軸綁定到0這個點plt.plot(x_list, fx, label='Tanh', linestyle="-")  # label為標簽plt.legend(['Tanh'])plt.title('Tanh Function')plt.show()

?>> 03 tanh函數

  • 優點:①收斂速度快;②有效的緩解了梯度消失問題;③對神經網絡可以使用稀疏表達;④對于無監督學習,也能獲得很好的效果。
  • 缺點:在訓練過程中容易出現神經元失望,之后梯度永遠為0的情況。
from matplotlib import pyplot as plt
import numpy as np
import mathdef sigmoid_function(x_list):fx = []for x in x_list:fx.append(np.where(x < 0, 0, x))return fxif __name__ == '__main__':x_list = np.arange(-10, 10, 0.01)fx = sigmoid_function(x_list)print(len(fx))ax = plt.gca()  # get current axis 獲得坐標軸對象ax.spines['right'].set_color('none')  # 將右邊的兩條邊顏色設置為空ax.spines['top'].set_color('none')  # 將上邊的兩條邊顏色設置為空ax.xaxis.set_ticks_position('bottom')  # 指定下邊的邊為 x 軸ax.yaxis.set_ticks_position('left')  # 指定左邊的邊為 y 軸ax.spines['bottom'].set_position(('data', 0))  # 指定的x軸綁定到0這個點ax.spines['left'].set_position(('data', 0))  # 指定的y軸綁定到0這個點plt.plot(x_list, fx, label='Tanh', linestyle="-")  # label為標簽plt.legend(['Tanh'])plt.title('Tanh Function')plt.show()

?

??

總結

以上是生活随笔為你收集整理的神经网络常用激活函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。