尝试使用Delta规则实现简单的神经网络,没有步进功能,几乎没有编程和机器学习的经验。到目前为止,我有下一个代码。
%matplotlib inline
from random import choice
from numpy import array, dot, random
import matplotlib.pyplot as plt
training_data = [(array([20,10,1]), 10),
(array([10,12,1]), 8),
(array([11,20,1]), 5),
(array([13,16,1]), 9), ]
w = random.rand(3)
a = []
mu = 0.001
n = 50
for i in xrange(n):
x, expected = choice(training_data)
result = dot(w,x)
delta = abs(expected - result)
a.append(delta)
if delta < a[-1]:
w += mu * delta * x
else: w -= mu * delta * x
plt.plot(a)
此代码的问题在于增量规则正在成长而不是下降。You may see that from this graph.我不确定我在哪里犯了错误。任何帮助表示赞赏。
我的圈子的编辑版本
for i in xrange(n):
x, expected = choice(training_data)
result = dot(w,x)
delta = abs(expected - result)
if delta < a[-1]:
w += mu * delta * x
else: w -= mu * delta * x
a.append(delta)
另外,我已经陈述了a = [0]。 new results
答案 0 :(得分:0)
如果您将delta
追加到a
的末尾,然后将delta
与a
(a[-1]
)的最后一个元素进行比较,则您要进行比较{ {1}},永远不会访问此分支。