博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
神经网络--单层感知器
阅读量:4096 次
发布时间:2019-05-25

本文共 1197 字,大约阅读时间需要 3 分钟。

python 代码

import numpy as npimport matplotlib.pyplot as plt#输入数据X = np.array([[1,2,4],              [1,3,3],              [1,5,2],              [1,1,2],              [1,1,3],              [1,2,1]             ])#标签Y = np.array([1,1,1,-1,-1,-1] )#权值初始化,1行3列,取值范围-1到1W = (np.random.random(3)-0.5)*2print(W)#学习率设置lr = 0.5#神经网络输出O = 0n=0X.shape[0]def update():    global X,Y,W,lr,n,O    n+=1    O = np.sign(np.dot(X,W.T))    #print('mat:O')    #print(O)    #print(Y-O)    W_C = lr*((Y-O).dot(X))/int(X.shape[0])    W = W + W_Cfor _ in range(1000):    update()#更新权值    #print(W)#打印当前权值    #print(n)#打印迭代次数    #O = np.sign(np.dot(X,W.T))#计算当前输出    if(O == Y.T).all(): #如果实际输出等于期望输出,模型收敛,循环结束        print(W)        print('loop:',n)        print('Finished')        break            #正样本row=X.shape[0]half=int(row/2)x1 = X[0:half,1]y1 = X[0:half,2]#负样本x2 = X[half:row,1]y2 = X[half:row,2]#计算分界线的斜率以及截距k = -W[1]/W[2]d = -W[0]/W[2]print('k=',k)print('d=',d)xdata = np.linspace(0,5)plt.figure()plt.plot(xdata,xdata*k+d,'r')plt.plot(x1,y1,'bo')plt.plot(x2,y2,'yo')plt.show()

输出:

[-0.68791     0.26176538  0.22569507][-4.68791     1.26176538  0.5590284 ]loop: 39Finishedk= -2.257068484812345d= 8.385817265458877

你可能感兴趣的文章
深究Java中的RMI底层原理
查看>>
用idea创建一个maven web项目
查看>>
Kafka
查看>>
9.1 为我们的角色划分权限
查看>>
维吉尼亚之加解密及破解
查看>>
DES加解密
查看>>
TCP/IP协议三次握手与四次握手流程解析
查看>>
PHP 扩展开发 : 编写一个hello world !
查看>>
inet_ntoa、 inet_aton、inet_addr
查看>>
用模板写单链表
查看>>
用模板写单链表
查看>>
链表各类操作详解
查看>>
C++实现 简单 单链表
查看>>
数据结构之单链表——C++模板类实现
查看>>
Linux的SOCKET编程 简单演示
查看>>
正则匹配函数
查看>>
Linux并发服务器编程之多线程并发服务器
查看>>
聊聊gcc参数中的-I, -L和-l
查看>>
[C++基础]034_C++模板编程里的主版本模板类、全特化、偏特化(C++ Type Traits)
查看>>
C语言内存检测
查看>>