线性回归前向传播(正向传播)

概述

前向传播,也称之为 正向传播

一句话解释:将神经网络正向走一遍

输入层—->隐藏层—->输出层

案例

在不同的神经网络中,算法不同,这里以 根据平均身高预测孩子身高 为例:

样本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]]

原文出处:/show_1EF4Glu1ETJD.html