我在Python中编写了这个简单的感知器算法
import numpy as nu
import random as ra
function = lambda x: 1 if x >= 0 else 0
training_set=[([1,0,0],1),
([1,1,1],1),
([1,-1,0],0),
([1,0,-1],0),
]
w = nu.random.rand(3)
eta = 0.1
print(w)
for l in range(10000):
for _ in range(4):
x,y = training_set[_]
res = (function(nu.dot(w,x)) - y)
update = eta * res
w += nu.dot(update,x)
print(w)
function
检查是否w*x>=0
。
我有一个包含4个元素的训练集,第一个元素是xi
向量,第二个元素是预期结果。第一个元素xi是偏差。
循环继续更新wi
1000次迭代。
事实是,有时会收敛,有时则不收敛。
有些问题:
答案 0 :(得分:0)
w
的初始值,学习率,培训样本的顺序等。您无法对收敛做出任何硬性陈述。