我需要在Python3中实现Rosenblatt的感知器。
算法是这样的:
我想要一个实现该算法的功能,输入应为要解决的问题的X和Y矩阵,输出应为w向量。
在这种情况下,w向量由偏差和权重组成。
在这里,矩阵X和Y
X_and = np.array([[1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]])
Y_and = np.array([[0], [0], [0], [1]])
X_or = X_and.copy()
Y_or = np.array([[0], [1], [1], [1]])
print(X_and)
print(Y_and)
print(X_or)
print(Y_or)
[[1 0 0]
[1 0 1]
[1 1 0]
[1 1 1]]
[[0]
[0]
[0]
[1]]
[[1 0 0]
[1 0 1]
[1 1 0]
[1 1 1]]
[[0]
[1]
[1]
[1]]
在这里,我做的代码
def perceptron_learn(x, y):
w=np.zeros(3)
error=True
while error==True:
i=0
error= False
while i < len(y):
o = x[i]*(w)
if np.any(o != y[i]):
w = w + (y[i]-o)*(x[i])
error = True
i=i+1
return w, i
现在,我遇到无限循环错误。
我们将不胜感激!