ML之NN:利用神经网络的BP算法解决XOR类(异或非)问题(BP solve XOR Problem)
【摘要】 ML之NN:利用神经网络的BP算法解决XOR类(异或非)问题(BP solve XOR Problem)
目录
输出结果
实现代码
输出结果
实现代码
#BP solve XOR Problemimport numpy as np X = np.array ([[1, 0, 0], [1, 0, 1], [1, ...
ML之NN:利用神经网络的BP算法解决XOR类(异或非)问题(BP solve XOR Problem)
目录
输出结果
实现代码
-
#BP solve XOR Problem
-
import numpy as np
-
-
X = np.array ([[1, 0, 0],
-
[1, 0, 1],
-
[1, 1, 0],
-
[1, 1, 1]])
-
#标签
-
Y = np.array ([[0, 1, 1, 0]])
-
V = np.random.randn(3,4)*2-1
-
W = np.random.randn(4,1)*2-1
-
print (V)
-
print (W)
-
#设置学习率
-
lr = 0.11
-
-
def update(): #更新权值的函数
-
global X,Y,W,V,lr
-
L1=sigmoid(np.dot(X,V))
-
L2=sigmoid(np.dot(L1,W))
-
L2_delta=(Y.T-L2)*dsigmoid(L2)
-
L1_delta=L2_delta.dot(W.T)*dsigmoid(L1)
-
-
W_C=lr*L1.T.dot(L2_delta)
-
V_C=lr*X.T.dot(L1_delta)
-
W=W+W_C
-
V=V+V_C
-
for i in range(20000):
-
update()
-
if i%500==0:
-
L1=sigmoid(np.dot(X,V)) #隐藏层输出4*4
-
L2=sigmoid(np.dot(L1,W)) #输出层输出4*1
-
print("error:",np.mean(np.abs(Y.T-L2)))
-
-
L1=sigmoid(np.dot(X,V))
-
L2=sigmoid(np.dot(L1,W))
-
print(L2)
-
-
-
def judge(x):
-
if x>=0.5:
-
return 1
-
else:
-
return 0
-
for i in map(judge,L2):
-
print(i)
文章来源: yunyaniu.blog.csdn.net,作者:一个处女座的程序猿,版权归原作者所有,如需转载,请联系作者。
原文链接:yunyaniu.blog.csdn.net/article/details/80789982
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)