单层神经网络手写板

Posted on 2018-04-09 16:01  桐枳凤凰  阅读(34)  评论(0)    收藏  举报

#数据
import numpy as np
w=np.linspace(0,1,16)
b=[0.35,0.65]
I=[34.71,184.23,71.49,8]
a=

#s激活函数
def sigmoid(z):
return 1.0/(1+np.e**(-z))

def f1(w,b,I):
#FP
h1=sigmoid(w[0]*I[0]+w[1]*I[1]+w[2]*I[2]+b[0])
h2=sigmoid(w[3]*I[0]+w[4]*I[1]+w[5]*I[2]+b[0])
h3=sigmoid(w[6]*I[0]+w[7]*I[1]+w[8]*I[2]+b[0])
h4=sigmoid(w[9]*I[0]+w[10]*I[1]+w[11]*I[2]+b[0])


o=sigmoid(w[12]*h1+w[13]*h2+w[14]*h3+w[15]*h4+b[1])


#BP
t1=-(I[3]-o)*o*(1-o)

#更新w 先更新后面结果到h2
w[12] = w[12] - 0.5 * (t1 * h1)
w[13] = w[13] - 0.5 * (t1 * h2)
w[14] = w[14] - 0.5 * (t1 * h3)
w[15] = w[15] - 0.5 * (t1 * h4)
#更新w 在更新原始数据到营养素
w[0] = w[0] - 0.5 * (t1*w[12] )*h1*(1-h1)*I[0]
w[1] = w[1] - 0.5 * (t1*w[12] )*h1*(1-h1)*I[1]
w[2] = w[2] - 0.5 * (t1*w[12] )*h1*(1-h1)*I[2]
w[3] = w[3] - 0.5 * (t1*w[13] )*h2*(1-h2)*I[0]
w[4] = w[4] - 0.5 * (t1*w[13] )*h2*(1-h2)*I[1]
w[5] = w[5] - 0.5 * (t1*w[13] )*h2*(1-h2)*I[2]
w[6] = w[6] - 0.5 * (t1*w[14] )*h3*(1-h3)*I[0]
w[7] = w[7] - 0.5 * (t1*w[14] )*h3*(1-h3)*I[1]
w[8] = w[8] - 0.5 * (t1*w[14] )*h3*(1-h3)*I[2]
w[9] = w[9] - 0.5 * (t1*w[15] )*h4*(1-h4)*I[0]
w[10] = w[10] - 0.5 * (t1*w[15] )*h4*(1-h4)*I[1]
w[11] = w[11] - 0.5 * (t1*w[15] )*h4*(1-h4)*I[2]

print("-"*20)
print(w)
print("-"*20)
return w

 

for i in range(1000):
print('第%d个'%i)
w=f1(w,b,I)

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3