深度学习入门numpy型感知器2(note)
In [3]:
#权重相当于电流里所说的电阻。电阻是决定电流流动难度的参数,
#电阻越低,通过的电流就越大。而感知机的权重则是值越大,通过
#的信号就越大。不管是电阻还是权重,在控制信号流动难度(或者流
#动容易度)这一点上的作用都是一样的。
#输入信号被送往神经元时,会被分别乘以固定的权重(w1x1、w2x2)。神经元会计算传送过来的信号的总和,只有当这个总和超过
#了某个界限值时,才会输出1。这也称为“神经元被激活”。
#偏置和权重w1、w2 的作用是不
#一样的。具体地说,w1 和w2 是控制输入信号的重要性的参数,而偏置是调
#整神经元被激活的容易程度(输出信号为1 的程度)的参数。比如,若b 为
#−0.1,则只要输入信号的加权总和超过0.1,神经元就会被激活。但是如果b
#为−20.0,则输入信号的加权总和必须超过20.0,神经元才会被激活。
def AND(x1,x2): #implement using python basic
w1,w2,theta = 0.5,0.5,0.7 # theta represents thresholds
tmp = x1*w1 + x2*w2
if tmp <= theta:
return 0
elif tmp > theta:
return 1
Output:
In [4]:
print(AND(0,0))
print(AND(0,1))
print(AND(1,0))
print(AND(1,1))
Output:
0
0
0
1
In [13]:
#implement using numpy
import numpy as np
w = np.array([0.4,0.6])
b = -0.6
for x1 in [0,1]:
for x2 in [0,1]:
x = np.array([x1,x2])
print(x1,x2)
print(w*x)
print(np.sum(w*x))
print(np.sum(w*x)+b) # if > 0 means true, otherwise false
print(10*'-')
Output:
0 0
[0. 0.]
0.0
-0.6
----------
0 1
[0. 0.6]
0.6
0.0
----------
1 0
[0.4 0. ]
0.4
-0.19999999999999996
----------
1 1
[0.4 0.6]
1.0
0.4
----------
In [ ]:
#机器学习的课题就是将这个决定参数值的工作交由计算机自动进行。
#学习是确定合适的参数的过程,而人要做的是思考感知机的构造(模型),并把训练数据交给计算机。
#所以,本章节严格地说,并没有利用深度学习来实现and or。那就继续吧。
#点评:或许作者认为AND OR用深度学习 属于杀鸡用牛刀,后面的非线性模型才舍得用DL。
Output:
to be continued