您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 智能计算-单层感知器实验
教务处制第页1实验报告2018──2019学年第二学期实验课程智能计算实验学生姓名***实验项目单层感知器学院计算机学院实验性质方向选修实验课班级学号***实验地点同组人数第组实验日期第九周星期五第9.10节成绩环境参数Window7,python一、实验目的及要求二、实验原理、实验内容三、实验仪器设备及材料四、操作方法与实验步骤五、实验数据记录及处理六、实验结果分析实验一:单层感知器1、单层感知器结构图教务处制第页2(1)输入节点:x1,x2,x3(2)输出节点:y(3)权向量:w1,w2,w3,w0=1(4)偏执因子:b(x0)(5)定义激活函数:0,10,1)(f{xxx2.主要代码(1)单层感知器实现逻辑“或”importnumpyasnp#输入数据'''[d,x1,x2]d:偏置值x1:第一个输入x2:第二个输入'''X=np.array([[1,1,1],[1,1,0],[1,0,1],[1,0,0]])#标签(期望值)Y=np.array([[1],教务处制第页3[1],[1],[-1]])#权值随机初始化#W=(np.random.random([2,1])-0.5)*2#通过改变学习率观察收敛速度(迭代次数)W=np.array([[0],[0],[0]])#激活函数defsgn(X_W):foriinrange(len(X_W)):if(X_W[i]=0):X_W[i]=-1else:X_W[i]=1returnX_W#学习率设置(手动改变观察迭代次数变化)lr=0.1#神经网络输出O=0#更新权重函数defupdate():globalX,Y,W,lrO=sgn(np.dot(X,W))#shape:(3,1)W_C=lr*(X.T.dot(Y-O))/int(X.shape[0])#这里除int(X.shape[0])=4是为了取误差的平均值,当输入节点多的时候要用W=W+W_Ci=0while(True):O=sgn(np.dot(X,W))if(O==Y).all():print('Finished')print(最后权值:,W.T)print('迭代次数:',i)breakupdate()i=i+1#画图importmatplotlib.pyplotasplt#正样本x1=[1,1,0]y1=[1,0,1]#负样本x2=[0]y2=[0]#计算分界线的斜率以及截距教务处制第页4k=-W[1]/W[2]d=-W[0]/W[2]print('斜率k=',k)print('截距d=',d)xdata=(-1,2)plt.figure()plt.plot(xdata,xdata*k+d,'r')plt.scatter(x1,y1,c='b')plt.scatter(x2,y2,c='y')plt.show()(2)线性神经网络引入非线性输入实现逻辑“异或”importnumpyasnp#输入数据X1=np.array([[1,1,1],[1,0,0],[1,0,1]])X2=np.array([[1,1,1],[1,0,0],[1,1,0]])#标签Y1=np.array([[-1],[-1],[1]])#为了区分我写成Y1,Y2其实他们相等Y2=np.array([[-1],[-1],[1]])#权值随机初始化W1=(np.random.random([3,1])-0.5)*2W2=(np.random.random([3,1])-0.5)*2#学习率设置(手动改变观察迭代次数变化)lr=0.1#神经网络输出O=0#更新权重函数defupdate(X,Y,W):globallrO=np.dot(X,W)#shape:(3,1)W_C=lr*(X.T.dot(Y-O))/int(X.shape[0])W=W+W_CreturnWdefsolve(X,Y,W,s):foriinrange(100):教务处制第页5W=update(X,Y,W)print('Finished')print(s+的最后权值:,W.T)#print(s+'的迭代次数:',i)returnWW1=solve(X1,Y1,W1,'一号分类器')W2=solve(X2,Y2,W2,'二号分类器')#画图importmatplotlib.pyplotasplt#正样本x1=[1,0]y1=[0,1]#负样本x2=[0,1]y2=[0,1]#计算分界线的斜率以及截距k1=-W1[1]/W1[2]d1=-W1[0]/W1[2]k2=-W2[1]/W2[2]d2=-W2[0]/W2[2]xdata=(-1,2)plt.figure()plt.plot(xdata,xdata*k1+d1,'r')plt.plot(xdata,xdata*k2+d2,'r')plt.scatter(x1,y1,c='b')plt.scatter(x2,y2,c='y')plt.show()3.实验步骤和实验结果(1)实验步骤流程如下图:教务处制第页6(3)实验结果:·单层感知器可以实现逻辑“或”;·单层感知器不能实现逻辑“异或”。4、分类线·单层感知器实现逻辑“或”结果:·单层感知器实现逻辑“异或”,通过实验发现,发现逻辑“异或”不可以用单层感知器实现,因为找不到一条直线可以将两类点分开,如下图:教务处制第页7所以我采用另一种方法——线性神经网络引入非线性输入实现逻辑“异或”,结果如下图:5.调节参数后实验数据·逻辑“或”的实现简单,几次迭代就能得到:·逻辑“异或”需要迭代一定次数教务处制第页8经过多次测试和查阅资料,得到基本上收敛次数与学习率的关系如下图:仪器设备损坏、非正常损耗材料(试剂)及处理情况:无教师对报告的最终评价及处理意见:教师签字:年月日
本文标题:智能计算-单层感知器实验
链接地址:https://www.777doc.com/doc-5224102 .html