感知机模型为神经网络入门所学
O = f(∑wij * Sj - θi)
利用感知机,模拟一个简单的二值逻辑加法
测试数据:
x1 x2 y
1 1 1
1 0 1
0 1 1
0 0 0
这里我们假设,阈值θi = 0
初始权重全部为0
代码如下
# 利用感知机模拟二值逻辑加法
# 阈值取0
import numpy as np
def nonlin(x):
if x > 0:
return 1
return 0
x=np.array([[1, 1], [1, 0], [0, 1], [0, 0]])
y=np.array([1, 1, 1, 0])
w = np.array([0] * 2) # 设置好权重值
def f(item):
return np.dot(w, item)
E = 0
for i, iter in enumerate(x):
O1 = f(iter)
sigma = abs(O1 - y[i])
delta = sigma * iter
w += delta
E += sigma
print(E)
print(w[0], w[1])