from itertools import count import numpy import random #用到的库。 step_function = lambda x: 1 if x>=0 else 0 #是创建一个 step 函数,充当感知器的激活函数。输入小于0,则该函数将返回0;反之,它将返回1。 td = [ (numpy.array([1,1,1]), 0), (numpy.array([1,0,0]), 1), (numpy.array([0,1,0]), 1), (numpy.array([0,0,1]), 0), ]#建立数据集,每个元组的第二个元素表示预期的结果,第一个元素的第三个元素是偏置。 def training(td):#训练感知器学习算法 w = numpy.random.rand(3)#生成一个3列的0到1范围的随机数作为初始权重向量 random.seed(1)# 设置随机数种子 lr = 0.2 # 设置下学习效率 but这个不知道怎么设置比较好 n = 200 # 设置训练次数为200 a = 0 for i in range(n): x, e = random.choice(td)# 从数据集中随机选取一个子集x作为训练集,e为所要得到的0 or 1. r = numpy.dot(w, x)+a# 结果;w为权重,在不断的迭代中权重向量不断修正 err = e - step_function(r)# 误差的计算 w1 =lr * err * x #w1是权重的更新值用误差err乘以学习速率lr和输入向量x w += w1# 有助于我们计算校正因子此时的w是最新权重 a = a + lr * err#为下一次修正 err_array = []
感知器算法解决xor函数
最新推荐文章于 2024-04-01 21:31:15 发布