0
私は、ORやANDのような論理関数を分類できる単純なパーセプトロンをPythonで実装しようとしています。パーセプトロンは正しくトレーニングしていません - エラーはループですか?
Iは、Pythonで、次のコードを持っている:
バイアスは、各入力ベクトルにおける3番目のエントリです。 '正しい'値を含む行ベクトル '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)