概述
前向传播,也称之为 正向传播
一句话解释:将神经网络正向走一遍
输入层—->隐藏层—->输出层
案例
在不同的神经网络中,算法不同,这里以 根据平均身高预测孩子身高 为例:
样本demo如下:
| 特征x1(父母平均身高) | 真实值(孩子真实身高) | |
|---|---|---|
| 样本1 | 1.6 | 1.63 |
| 样本2 | 1.7 | 1.73 |
| 样本3 | 1.8 | 1.82 |
初始化权重和偏置量
在keras中的全连接网络中:
- 权重 默认初始化的方式是 随机的
- 偏置量 默认为0
为了方便计算,手动设置 权重和偏置量,如下
| 权重 w1 | 偏置量 b1 |
|---|---|
| 0.1 | 0 |
注意:
运算后的结果 与 样本真实值 会有误差
计算h1
计算公式:
h1结果=x1*w1+b1
x表示特征,即父母平均身高
为了 方便计算,将 偏执量 b 理解成 x0*w0,如下:
h1结果=x0*w0+x1*w1
注意:
- 在tensorflow中,初始化时,b1值是0
- x0为1,也就是说 特征多了一个
- w0是0
由于有很多个样本,用循环计算复杂,通过 矩阵 计算更加简单,转换公式如下:
注意:
- 样本矩阵,行是样本,列是特征
最终结果如下
o1输出层
由于隐层只有一层,所以直接将h1的结果输出
keras 代码验证
上述是理论,接下来我们要通过keras代码,查看输出的结果
实现思路,建立好模型后,需要手动设置权重为0.1,直接调用predict()方法进行预测,就会以权重(0.1)和偏置量(0)进行计算
import tensorflow as tf
import numpy as np
data=np.array([1.6,1.7,1.8])
model = tf.keras.Sequential()
dense=tf.keras.layers.Dense(1,input_shape=(1,),kernel_initializer=tf.keras.initializers.Constant(0.1))
model.add(dense)
model.summary()
out_result = model.predict(data)
out_result
执行结果如下:
[[0.16000001]
[0.17 ]
[0.17999999]]



