机器学习/深度学习 都是分两步:train训练,inference推理。
- 训练的时候会根据输入数据、模型的输出结果、以及输入数据对应的真实值,把
权重weight
和偏置bias
更新到模型中——换句话说,模型中有用的主要就是权重weight
和偏置bias
。这两个都是data, 数据,模型中除了data之外还有模型的structure,或者说算法,比如第一层来个卷积,第二层来个最大值池化 - 推理,就是把新来的未知数据输入到模型中,使之经过一层一层的算法,在每一层和该层的数据进行计算(如何计算就是该层的算法定义的),比如
* 权重 + 偏置
,计算之后输出最终结果,完成推理。
下面给个例子,说明权重和偏置的作用。这个例子中权重和偏置的值是我们根据经验直接确定的,因为问题很简单,对于复杂的问题,就要通过训练(前向+反馈)来不断更新权重和偏置,得到一个满意解。
import numpy as np
# 定义逻辑函数
def AND(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5]) # 权重 weight
b = -0.7 # 偏置 bias
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else:
return 1
def OR(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5]) # 权重 weight
b = -0.2 # 偏置 bias
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else:
return 1
# 测试
print(AND(0, 0)) # 0
print(AND(0, 1)) # 0
print(AND(1, 0)) # 0
print(AND(1, 1)) # 1
print(OR(0, 0)) # 0
print(OR(0, 1)) # 1
print(OR(1, 0)) # 1
print(OR(1, 1)) # 1