Simple example: OR
x
1
,
x
2
∈
x_1, x_2 \in
x1,x2∈{0, 1}
y
=
x
1
O
R
x
2
y = x_1 OR x_2
y=x1ORx2
h θ ( x ) = g ( − 10 + 20 x 1 + 20 x 2 ) h_\theta(x) = g(-10 + 20x_1+20x_2) hθ(x)=g(−10+20x1+20x2)
g ( x ) = 1 1 + e − x g(x) = \frac1{1+e^{-x}} g(x)=1+e−x1
x 1 x_1 x1 | x 2 x_2 x2 | h θ ( x ) h_{\theta}(x) hθ(x) |
---|---|---|
0 | 0 | g ( − 10 ) ≈ 0 g(-10) \approx0 g(−10)≈0 |
0 | 1 | g ( 10 ) ≈ 1 g(10)\approx 1 g(10)≈1 |
1 | 0 | g ( 10 ) ≈ 1 g(10)\approx1 g(10)≈1 |
1 | 1 | g ( 30 ) ≈ 1 g(30)\approx1 g(30)≈1 |
激活函数:
def sigmoid(x):
return 1/(1+np.exp(-x))
权重矩阵:
w = np.array([-10, 20, 20])
w = np.mat(w)
输入函数:
def input(x1, x2):
data = np.array([1, x1, x2])
data = np.mat(data.reshape(3, 1))
return w*data
输出函数:
def out(data): # data为input(1, 1)、input(1, 0)、input(0, 1)、input(0, 0)
result = sigmoid(x)
if result<0.5:
return 0
else:
return 1
代码测试: