我已经为 XOR 函数编写了这个神经网络。输出不正确。它没有正确分类测试输入。谁能告诉我原因。
import numpy as np
import pandas as pd
x=np.array([[0,0],[0,1],[1,0],[1,1]])
y=np.array([[0],[1],[1],[0]])
np.random.seed(0)
theta1=np.random.rand(2,8)
theta2=np.random.rand(8,1)
np.random.seed(0)
b1=np.random.rand(4,8)
b2=np.random.rand(4,1)
alpha=0.01
lamda=0.01
for i in range(1,2000):
z1=x.dot(theta1)+b1
h1=1/(1+np.exp(-z1))
z2=h1.dot(theta2)+b2
h2=1/(1+np.exp(-z2))
dh2=h2-y
#back prop
dz2=dh2*(1-dh2)
H1=np.transpose(h1)
dw2=np.dot(H1,dz2)
db2=np.sum(dz2)
W2=np.transpose(theta2)
dh1=np.dot(dz2,W2)
dz1=dh1*(1-dh1)
X=np.transpose(x)
dw1=np.dot(X,dz1)
db1=np.sum(dz1)
dw2=dw2-lamda*theta2
dw1=dw1-lamda*theta1
theta1=theta1-alpha*dw1
theta2=theta2-alpha*dw2
b1+=-alpha*db1
b2+=-alpha*db2
#prediction
#test inputs
input1=np.array([[0,0],[1,1],[0,1],[1,0]])
z1=np.dot(input1,theta1)
h1=1/(1+np.exp(-z1))
z2=np.dot(h1,theta2)
h2=1/(1+np.exp(-z2))
预期输出=[0],[0],[1],[1]
actual output=[[ 0.95678049]
[ 0.99437206]
[ 0.98686979]
[ 0.98628204]]
这里都是。