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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

神经网络的激活函数、并通过python实现激活函数

發(fā)布時間:2025/3/12 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 神经网络的激活函数、并通过python实现激活函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

神經(jīng)網(wǎng)絡(luò)的激活函數(shù)、并通過python實現(xiàn)

    • what is 激活函數(shù)
    • 激活函數(shù)的python實現(xiàn)
      • python實現(xiàn)階躍函數(shù)
      • python實現(xiàn)sigmoid函數(shù)
      • python實現(xiàn)ReLU函數(shù)
    • 激活函數(shù)的特點

what is 激活函數(shù)

感知機(jī)的網(wǎng)絡(luò)結(jié)構(gòu)如下:

左圖中,偏置b沒有被畫出來,如果要表示出b,可以像右圖那樣做。

用數(shù)學(xué)式來表示感知機(jī):

上面這個數(shù)學(xué)式子可以被改寫:

我們表達(dá)的意義是:輸入信號的總和被h(x)轉(zhuǎn)換成輸出y。

像h(x)函數(shù)一樣,將輸入信號的總和轉(zhuǎn)換為輸出信號,這種函數(shù)一般被稱為激活函數(shù)。上面這個h(x)表示的激活函數(shù)稱為階躍函數(shù)。

表示激活函數(shù)計算過程的圖如下:

激活函數(shù)的python實現(xiàn)

python實現(xiàn)階躍函數(shù)

為了方便階躍函數(shù)的參數(shù)取Numpy數(shù)組,用以下方式實現(xiàn)階躍函數(shù)。

對numpy數(shù)組進(jìn)行不等號運(yùn)算后,數(shù)組的各個元素都會進(jìn)行不等號運(yùn)算,生成一個布爾型數(shù)組。

這個代碼里數(shù)組中x大于0的元素轉(zhuǎn)換成True,小于等于0的元素轉(zhuǎn)換成False。由于階躍函數(shù)要輸出int類型的0或1,所以添加一個dtype=np.int32。

import numpy as np import matplotlib.pylab as pltdef step_function(x):return np.array(x > 0, dtype=np.int32)if __name__ == '__main__':X = np.arange(-5.0, 5.0, 0.1) # 在-0.5到5.0范圍內(nèi),以0.1為單位生成Numpy數(shù)組# [-5.0,-4.9,...,4.9,5.0]Y = step_function(X)plt.plot(X, Y)plt.ylim(-0.1, 1.1) # 指定圖中繪制的y軸的范圍plt.show()

python實現(xiàn)sigmoid函數(shù)

下面定義的函數(shù)的參數(shù)x是Numpy數(shù)組時,結(jié)果也能正確被計算。因為Numpy具有廣播功能,如果標(biāo)量和Numpy數(shù)組進(jìn)行數(shù)值運(yùn)算,那么這個標(biāo)量將和Numpy數(shù)組中的各個元素進(jìn)行運(yùn)算。

import numpy as np import matplotlib.pylab as pltdef sigmoid(x):return 1 / (1 + np.exp(-x))if __name__ == '__main__':X = np.arange(-5.0, 5.0, 0.1)Y = sigmoid(X)plt.plot(X, Y)plt.ylim(-0.1, 1.1)plt.show()

python實現(xiàn)ReLU函數(shù)

代碼中使用Nmupy的maximum函數(shù),該函數(shù)會從輸入的數(shù)值中選擇較大的值進(jìn)行輸出。

import numpy as np import matplotlib.pylab as pltdef relu(x):return np.maximum(0, x)if __name__ == '__main__':x = np.arange(-5.0, 5.0, 0.1)y = relu(x)plt.plot(x, y)plt.ylim(-1.0, 5.5)plt.show()

激活函數(shù)的特點

上面的激活函數(shù)無論是階躍、sigmoid還是ReLU,使用的都是非線性函數(shù),如果使用線性函數(shù),比如h(x)=ax作為激活函數(shù),那么y(x) = h(h(h(x)))的運(yùn)算對應(yīng)3層神經(jīng)網(wǎng)絡(luò),這個運(yùn)算會進(jìn)行y(x) = aaax的乘法運(yùn)算,但是同樣的處理可以由y(x)=bx(b=aaa)這一次乘法運(yùn)算表示,也還是相當(dāng)于一層神經(jīng)網(wǎng)絡(luò)。也就是說,使用線性函數(shù)的話,加深神經(jīng)網(wǎng)絡(luò)的層數(shù)就沒有意義了。為了發(fā)揮疊加層的優(yōu)勢,激活函數(shù)必須使用非線性函數(shù)

總結(jié)

以上是生活随笔為你收集整理的神经网络的激活函数、并通过python实现激活函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。