感知机算法,python的for循环计算,输出有奇怪的结果

自己编了一个感知机算法,前边的输出都没有问题,在第二十次循环的时候,原本结果该是[0.05,0.05,0.15],但是却出现了奇怪的结果
[ 5.00000000e-02 -1.38777878e-17 1.50000000e-01]
后面也有这种输出(x,y也是)
求大神告诉我为啥会出现这个结果呢?

import sys
import numpy as np

def cal(a):
    if a>0:
        o=1
    else: 
        o=0
    return o

input=np.array([[-1,0,0],[-1,0,1],[-1,1,0],[-1,1,1]])
t=np.array([0,0,0,1])
w=np.array([-0.1,-0.2,0.2])
weight=w.transpose()
index=range(3)


count=0
loop=0
while(1):
    for i in range(4):
        loop=loop+1;
        a=input[i]
        x=np.dot(a,weight)
        print 'No loop',loop,'x=',x
        y=cal(x)
        print 'No. loop',loop,'y=',y
        if y==t[i]:
            count=count+1
        else:
            count=0
            for n in range(3):
                weight[n]=weight[n]+0.05*(t[i]-y)*a[n]
            print weight
        if count==4:
            break
    if count==4:
        break
        
aa=np.array([ 0.1,-0.05,0.1]);

for n in range(3):
    aa[n]=aa[n]+0.05*(1-0)*a[n]
print aa
阅读 2.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题