【发布时间】:2017-12-01 18:09:34
【问题描述】:
我正在尝试在 python 中实现一个简单的感知器,它将能够对 OR 或 AND 等逻辑函数进行分类。
我在 python 中有以下代码:
偏差是每个输入向量中的第三个条目。有一个行向量“targets”,其中包含“正确”值,标签:
问题是权重没有正确更新。它们仍然是随机的,这告诉我没有真正被训练。
inputs = np.array([
[0,0,1],
[0,1,1],
[1,0,1],
[1,1,1],
])
targets = np.array([0,0,0,1])
def step_function(x):
return 1 * (x>=0)
def train(x,y):
rate = 0.1
trials = 10
errors = []
w = np.random.rand(len(inputs[0]))
for t in range(trials):
for i, x in enumerate(inputs):
actual = np.dot(inputs[i], w)
desired = targets[i]
error = desired - step_function(actual)
if error != 0:
errors.append(error)
w += rate * error * inputs[i]
return w
w = train(inputs, targets)
print(w)
【问题讨论】:
标签: python arrays for-loop enumerate perceptron