使用keras做线性回归训练记录

218 篇文章 29 订阅
156 篇文章 16 订阅

我们建立一个如下的模型:

数学表达师式是

y=[w_{00}\ \ w_{01}]\begin{bmatrix} x_{0}\\ x_{1} \end{bmatrix} + b

在这里,我们给定

w_{00}=2.0\ \ w_{01}=8.0 \ \ b=1.0

并且给定一组按照此规律分布的数据,用这组数据进行训练,看出来的网络能否作出准确预测。

数据输入: [[-1.0,2.0],[0.0,1.0],[2.0,3.0],[4.0,0.9]]

数据输出:[15.0,9.0,29.0,16.2]

那么当数据是两组的[4.0,11.0],[5.9,6.7]时候,输出是什么呢?

训练模型:

from tensorflow import keras
import numpy as np
model=keras.Sequential([keras.layers.Dense(units=1, input_shape=[None, 2])])
model.compile(optimizer="sgd",loss="mean_squared_error")
xs=np.array([[-1.0,2.0],[0.0,1.0],[2.0,3.0],[4.0,0.9]],dtype=float)
ys=np.array([15.0,9.0,29.0,16.2],dtype=float)
 
model.fit(xs,ys, epochs=3000)
model.summary()

训练过程以及网络参数:

 可以看到,最后的输出模型LOSS值已经非常非常小了。

预测模式

我们用这个模型预测 [[-1.0,2.0],[0.0,1.0],[2.0,3.0],[4.0,0.9]]的输出

pd=np.array([[4.0,11.0],[5.9,6.7]], dtype=float)
print(pd.shape)
model.predict(pd)

可以看到输出如下:

 我们套用上面的公式,实际计算一下准确值

y=[2.0\ \ 8.0]\begin{bmatrix} x_{0}\\ x_{1} \end{bmatrix} + 1

\\ y=[2.0\ \ 8.0]\begin{bmatrix} 4.0\\ 11.0 \end{bmatrix} + 1.0=97.0 \\ y=[2.0\ \ 8.0]\begin{bmatrix} 5.9\\ 6.7 \end{bmatrix} + 1.0=11.8+53.6+1.0 = 66.4

可以看到,预测出来的值还是非常非常接近的。

这种方式到底有什么不同呢?

通常我们解决问题,希望由我们自己去找出规律,然后在由规律去解决问题,但是CNN却相反,我们不需要自己去找出规律,而是由模型自己去训练,得到规律,我们只要结果,一下子把我们从问题中解放了出来。如下图所示:


跑上述模型的环境版本是:

调试方式:

查看层的名称:

print(model.layers[2].name)

获取weights 和 bias

weights, biases = model.layers[0].get_weights()

 如上图所是,训练得到的bias和weights和初始设定的2.0,3.0,1.0非常接近。

 查看参数形状

训练的时候加入验证集


结束!

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值