DL:LinearNN(numpy自定义的) solve XOR problem-阿里云开发者社区

开发者社区> 一个处女座的程序猿> 正文

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

简介: DL:LinearNN(numpy自定义的) solve XOR problem
+关注继续查看

输出结果

image.png




核心代码


#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简单案例

https://imgconvert.csdnimg.cn/aHR0cHM6Ly9pbWFnZXMyMDE4LmNuYmxvZ3MuY29tL2Jsb2cvMTMxMzQ3NS8yMDE4MDYvMTMxMzQ3NS0yMDE4MDYyNTE1NDcwNTg3Mi01NDA3MDQ0NzEuZ2lm

2、LinearNN solve  XOR problem

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

image.png

image.png





版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
3956 0
Flink SQL FileSystem Connector 分区提交与自定义小文件合并策略
本文先通过源码简单过一下分区提交机制的两个要素——即触发(trigger)和策略(policy)的实现,然后用合并小文件的实例说一下自定义分区提交策略的方法。
1649 0
自定义ContentProvider以及ContentObserver的使用完整详细示例
示例说明: 该示例中一共包含两个工程。其中一个工程完成了自定义ContentProvider,另外一个工程用于测试该自定义ContentProvider且在该工程中使用了ContentObserver监听自定义ContentProvider的数...
633 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
5676 0
+关注
一个处女座的程序猿
国内互联网圈知名博主、人工智能领域优秀创作者,全球最大中文IT社区博客专家、CSDN开发者联盟生态成员、中国开源社区专家、华为云社区专家、51CTO社区专家、Python社区专家等,曾受邀采访和评审十多次。仅在国内的CSDN平台,博客文章浏览量超过2500万,拥有超过57万的粉丝。
1701
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载