感知机接收多个输入信号,输出一个信号。感知机的信号只有“1/0”两种取值。
神经元计算传送过来的信号的总和,当总和超过 阈值时,“神经元被激活”。阈值用\(\theta\)表示
\[
y=\begin{cases} 0,& \text { $(\omega_1x_1+\omega_2x_2\leq \theta)$ }\\ 1,& \text { $(\omega_1x_1+\omega_2x_2>\theta)$} \end{cases}
\]
#实现一个AND门
def AND(x1,x2):
w1,w2,theta = 0.5,0.5,0.7
tmp = w1*x1+w2*x2
if tmp<=theta:
return 0
elif tmp>theta:
return 1
\[
y=\begin{cases}
0,& \text{$b+\omega_1x_1+\omega_2x_2 \leq 0$}\1,& \text{$b+\omega_1x_1+\omega_2x_2>0$}
\end{cases}
\]
\(b=-\theta\) 称为偏置,\(\omega_1\)和\(\omega_2\)称为权重
import numpy as np
x = np.array([0,1]) #输入
w = np.array([0.5,0.5]) #权重
b = -0.7 #偏置
w*x
np.sum(w*x)
np.sum(w*x)+b
def AND(x1,x2):
x = np.array([x1,x2])
w = np.array([0.5,0.5])
b = -0.7
tmp = np.sum(2*x)+b
if tmp<=0:
return 0
else:
return 1
注:\(\omega_1,\omega_2\)是控制输入信号重要性的参数,偏置\(b\)为调整神经元被激活的容易程度(输出信号为1的程度)的参数
#异或门的实现
def XOR(x1,x2):
s1 = NAND(x1,x2)
s2 = OR(x1,x2)
y = AND(s1,s2)
return y
原文:https://www.cnblogs.com/suqinghang/p/12262981.html