一般习惯于把学习率eta写在前面。
这个问题比较高深
y 的[0:99]即可
如果能分享一下源码就好了
感知器其实就是一个函数,其表示形式可以写成
f(x)=sign(dot(w,x)+b)//dot(w,x)表示求两个向量的点积
上式中,w是权重(weigh)向量,b叫做偏置(bias)
本教程中的w0就是上面式子里的偏置b.
dot(w,x)+b又可以写成 dot(w,x)+b*1,
这里令W=[b,w1,w2,...,wn] ,令X=[1,x1,x2,...,xn],所以初始化W的长度为n+1,多出来的那个就是偏置啦
希望能帮到你~
相当于[1,1,1……1].dot(errors),所有的x0都被初始化为1了,所以跟sum函数的意思一样,老师就直接写成sum了
原理是△wj的公式(不方便打)中y(i)-φ (z(i))是errors ,根据求和得到errors.sum()。errors.sum()中的每一个值再与self.eta(学习率)想相乘,也就是△w(w:=w+△w),而self.w_[0]就是w.也就是对△wj公式和w:=w+△w公式的一个推导。
cost这个变量,记录的是每一轮迭代中代价函数的值,而本案例中使用的是方差总和来衡量代价总量。具体见代码:
for _ in range(n_iter): ... errors = y - output cost = (errors ** 2).sum() cost_.append(cost) ...
反向传播调整权重的目的,是为了让代价函数的值最小。案例中体现在随着训练次数的增加,从第1次到第50次,总代价的快速下降。