公式推导
代码
import math
import random
import numpy as np
w = np.array([1.0, 1.0, 1.0])
x = np.array([[0, 0, 0],
[0, 1, 0],
[1, 0, 0],
[1, 1, 1]
])
t = np.array([[0.0], [0.0], [0.0], [1.0]])
a = 1
eps = 1e-4
def my_sum(k): # xiwi求和
sum1 = 0
for j in range(3):
sum1 += w[j] * x[k][j]
return sum1
def sigmod(k):
s = 1 / (1 + math.exp(-k))
return s
def delta(k):#deltai
rand = random.randint(0, 3)
inter = sigmod(my_sum(rand))
return (inter - t[rand]) * (1 - inter) * x[rand][k]*inter
for i in range(10000):
w[0] = w[0] - a * delta(0)
w[1] = w[1] - a * delta(1)
w[2] = w[2] - a * delta(2)
print(w[0], w[1], w[2])
输出
-3.491243245646915 -3.5018187151144464 10.638786340931444