python人工智能算法之人工神經(jīng)網(wǎng)絡(luò)怎么使用_第1頁
python人工智能算法之人工神經(jīng)網(wǎng)絡(luò)怎么使用_第2頁
python人工智能算法之人工神經(jīng)網(wǎng)絡(luò)怎么使用_第3頁
python人工智能算法之人工神經(jīng)網(wǎng)絡(luò)怎么使用_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第python人工智能算法之人工神經(jīng)網(wǎng)絡(luò)怎么使用人工神經(jīng)網(wǎng)絡(luò)

(ArtificialNeuralNetwork,ANN)是一種模仿生物神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和功能的數(shù)學(xué)模型,其目的是通過學(xué)習(xí)和訓(xùn)練,在處理未知的輸入數(shù)據(jù)時能夠進(jìn)行復(fù)雜的非線性映射關(guān)系,實(shí)現(xiàn)自適應(yīng)的智能決策??梢哉f,ANN是人工智能算法中最基礎(chǔ)、最核心的一種算法。

ANN模型的基本結(jié)構(gòu)包含輸入層、隱藏層和輸出層。輸入層接收輸入數(shù)據(jù),隱藏層負(fù)責(zé)對數(shù)據(jù)進(jìn)行多層次、高維度的變換和處理,輸出層對處理后的數(shù)據(jù)進(jìn)行輸出。ANN的訓(xùn)練過程是通過多次迭代,不斷調(diào)整神經(jīng)網(wǎng)絡(luò)中各層的權(quán)重,從而使得神經(jīng)網(wǎng)絡(luò)能夠?qū)斎霐?shù)據(jù)進(jìn)行正確的預(yù)測和分類。

人工神經(jīng)網(wǎng)絡(luò)算法示例

接下來看看一個簡單的人工神經(jīng)網(wǎng)絡(luò)算法示例:

importnumpyasnp

classNeuralNetwork():

def__init__(self,layers):

layers:數(shù)組,包含每個層的神經(jīng)元數(shù)量,例如[2,3,1]表示3層神經(jīng)網(wǎng)絡(luò),第一層2個神經(jīng)元,第二層3個神經(jīng)元,第三層1個神經(jīng)元。

weights:數(shù)組,包含每個連接的權(quán)重矩陣,默認(rèn)值隨機(jī)生成。

biases:數(shù)組,包含每個層的偏差值,默認(rèn)值為0。

self.layers=layers

self.weights=[np.random.randn(a,b)fora,binzip(layers[1:],layers[:-1])]

self.biases=[np.zeros((a,1))forainlayers[1:]]

defsigmoid(self,z):

Sigmoid激活函數(shù).

return1/(1+np.exp(-z))

defforward_propagation(self,a):

前向傳播.

forw,binzip(self.weights,self.biases):

z=np.dot(w,a)+b

a=self.sigmoid(z)

returna

defbackward_propagation(self,x,y):

反向傳播.

nabla_w=[np.zeros(w.shape)forwinself.weights]

nabla_b=[np.zeros(b.shape)forbinself.biases]

a=x

activations=[x]

zs=[]

forw,binzip(self.weights,self.biases):

z=np.dot(w,a)+b

zs.append(z)

a=self.sigmoid(z)

activations.append(a)

delta=self.cost_derivative(activations[-1],y)*self.sigmoid_prime(zs[-1])

nabla_b[-1]=delta

nabla_w[-1]=np.dot(delta,activations[-2].transpose())

forlinrange(2,len(self.layers)):

z=zs[-l]

sp=self.sigmoid_prime(z)

delta=np.dot(self.weights[-l+1].transpose(),delta)*sp

nabla_b[-l]=delta

nabla_w[-l]=np.dot(delta,activations[-l-1].transpose())

return(nabla_w,nabla_b)

deftrAIn(self,x_train,y_train,epochs,learning_rate):

訓(xùn)練網(wǎng)絡(luò).

forepochinrange(epochs):

nabla_w=[np.zeros(w.shape)forwinself.weights]

nabla_b=[np.zeros(b.shape)forbinself.biases]

forx,yinzip(x_train,y_train):

delta_nabla_w,delta_nabla_b=self.backward_propagation(np.array([x]).transpose(),np.array([y]).transpose())

nabla_w=[nw+dnwfornw,dnwinzip(nabla_w,delta_nabla_w)]

nabla_b=[nb+dnbfornb,dnbinzip(nabla_b,delta_nabla_b)]

self.weights=[w-(learning_rate/len(x_train))*nwforw,nwinzip(self.weights,nabla_w)]

self.biases=[b-(learning_rate/len(x_train))*nbforb,nbinzip(self.biases,nabla_b)]

defpredict(self,x_test):

預(yù)測.

y_predictions=[]

forxinx_test:

y_predictions.append(self.forward_propagation(np.array([x]).transpose())[0][0])

returny_predictions

defcost_derivative(self,output_activations,y):

損失函數(shù)的導(dǎo)數(shù).

returnoutput_activations-y

defsigmoid_prime(self,z):

Sigmoid函數(shù)的導(dǎo)數(shù).

returnself.sigmoid(z)*(1-self.sigmoid(z))

使用以下代碼示例來實(shí)例化和使用這個簡單的神經(jīng)網(wǎng)絡(luò)類:

x_train=[[0,0],[1,0],[0,1],[1,1]]

y_train=[0,1,1,0]

#創(chuàng)建神經(jīng)網(wǎng)絡(luò)

nn=NeuralNetwork([2,3,1])

#訓(xùn)練神經(jīng)網(wǎng)絡(luò)

nn.train(x_train,y_train,10000,0.1)

#測試神經(jīng)網(wǎng)絡(luò)

x_test=[[0,0],[1,0],[0,1],[1,1]]

y_test=[0,1,1,0]

y_predictions=nn.predict(x_test)

print(Predictions:,y_predicti

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論