DL:LinearNN(numpy自定义的) solve XOR problem

举报
一个处女座的程序猿 发表于 2021/03/26 22:54:09 2021/03/26
【摘要】 DL:LinearNN(numpy自定义的) solve  XOR problem     目录 输出结果 核心代码 LinearNN使用案例     输出结果   核心代码 #BP solve XOR Problemimport numpy as np #输入数据,第一列的数字1表示偏置X = np.array ([[1, 0, 0], [1...

DL:LinearNN(numpy自定义的) solve  XOR problem

 

 

目录

输出结果

核心代码

LinearNN使用案例


 

 

输出结果

 

核心代码


      #BP solve XOR Problem
      import numpy as np
      #输入数据,第一列的数字1表示偏置
      X = np.array ([[1, 0, 0],
       [1, 0, 1],
       [1, 1, 0],
       [1, 1, 1]])
      #标签
      Y = np.array ([[0, 1, 1, 0]]) #两个中括号代表二维。分别对应00、01、10、11
      #权值初始化,3行4列,取值范围[-1,1]
      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   #当自定义的函数需要调用外部的参数时,需要利用global进行声明为全局变量
       L1=sigmoid(np.dot(X,V))  #隐藏层输出4*4
       L2=sigmoid(np.dot(L1,W)) #输出层输出4*1
       L2_delta=(Y.T-L2)*dsigmoid(L2)   #Y.T就是Y的转置
       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))  #隐藏层输出4*4
      L2=sigmoid(np.dot(L1,W)) #输出层输出4*1
      print(L2)
      def judge(x):
      if x>=0.5:
      return 1
      else:
      return 0
      for i in map(judge,L2):
       print(i)
  
 

 

LinearNN使用案例

1、LinearNN简单案例

2、LinearNN solve  XOR problem
当lr=0.3时,相对比较大,每一个步长比较大,所以会在坑底部(最小值)两端进行跳动,然后训练到一定轮数,再改lr=0.03即可看到更好的情况。

 

 

 

文章来源: yunyaniu.blog.csdn.net,作者:一个处女座的程序猿,版权归原作者所有,如需转载,请联系作者。

原文链接:yunyaniu.blog.csdn.net/article/details/80789976

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。