神經網路BP演算法

2021-09-02 21:50:45 字數 2061 閱讀 1757

def seed(d,q,l): # d代輸入層神經元個數,q代表隱層神經元的個數,l代表輸出層元素的個數,該函式用來初始化權重和閾值

v=np.array([[random.random() for i in range(q)] for j in range(d)]) #初始化輸入層到隱層權重

#print(v)

w=np.array([[random.random() for i in range(l)] for j in range(q)]) #初始化隱層到輸出層權重

hyu=np.array([random.random() for i in range(q)])#初始化化隱藏層閾值

oyu=np.array([random.random() for i in range(l)]) #初始化輸出層閾值

return v,w,hyu,oyu

def forward(indata,hyu,oyu):#需要傳遞進去樣本屬性值indata

a=np.dot(indata,v)#隱層輸入

#print(a.shape)

h=sigmoid(a-hyu)

h=np.array(h)

b=np.dot(h,w)

forwardy=sigmoid(b-oyu)

return forwardy,b,h

def sigmoid(x):

for i in range(len(x)):

x[i]=1/(1+math.exp(-x[i]))

return x

』 --main-- 』

print(『請輸入隱層神經元的個數』)

f=int(input())

print(『程式正在執行』)

datanum=pd.read_csv(「watermelon_data.csv」,delimiter=",") #將西瓜資料3.0放入data矩陣

datanum=np.array(datanum)

m,n=datanum.shape #確定矩陣的行和列

#datanum=random.random(size=(m,n))

#for i in range(m):

datanum=np.array(datanum)#矩陣

m,n=np.shape(datanum)#shape 為矩陣的行數和每行包含的個數

data=datanum[:,:n-1]#提取西瓜的屬性資料

label=datanum[:,n-1:n] #提取西瓜標籤

m,n=data.shape

v,w,hyu,oyu=seed(n,f,1)

d=nq=f

l=1eta=0.2 #步長

z=5000

while (z>0):

z-=1

esum=0

for i in range(m):

y,b,h=forward(data[i],hyu,oyu) #前向傳播並返回**值y,隱層輸出h,輸出層輸入b

e=sum((y-label[i])(y-label[i]))/2

g=y(1-y)(label[i]-y)

#eh=h(1-h)((np.dot(w,g.t)).t)

eh=h(1-h)(np.dot(w,g))

w=w+etanp.dot(h.reshape(q,1),g.reshape(1,l))

oyu=oyu-etag

v=v+etanp.dot(data[i].reshape((d,1)),eh.reshape((1,q)))

hyu=hyu-eta*eh

predict=random.random(size=(m,1))

for i in range(m):

y,b,h=forward(data[i],hyu,oyu)

predict[i]=y #把**結果放在乙個矩陣裡面

if y>0.5:

print(『**』,『好瓜』,』~』,『真值』,label[i])

else:

print(『**』,『壞瓜』,』~』,『真值』,label[i])

print(predict)

BP神經網路演算法

bp神經網路是一種基於有監督的學習,使用非線性可導函式作為傳遞函式的前饋神經網路。一 模型 bp神經網路由輸入層 隱含層 輸出層組成。訓練過程分為網路輸入訊號正向傳播和誤差訊號反向傳播,按有監督學習方式進行訓練。1 相鄰層之間結點的連線有乙個權重wij,其值在 1,1 之間 2 每乙個神經單元都有一...

BP神經網路演算法

bp back propagation 神經網路是在1986年被rumelhart與mccelland等科學家提出的概念,正如名字所說,它是一種back propagation型的網路,它將訓練誤差進行逆向傳播,通過前饋的方式不斷修正網路中各神經元的權值,而進行自身學習的。bp神經網路拓撲結構包含有...

BP神經網路演算法實現

bp神經網路演算法實現 include include include include define nh 3 輸入層 define ni 4 隱層 define nj 1 輸出層 define nk 100 樣本容量 define test 70 測試集容量 define nr 0.7 學習效率 ...