嵌入式系统|使用keras做线性回归训练记录

我们建立一个如下的模型:
嵌入式系统|使用keras做线性回归训练记录
文章图片

数学表达师式是
嵌入式系统|使用keras做线性回归训练记录
文章图片

在这里,我们给定
嵌入式系统|使用keras做线性回归训练记录
文章图片

并且给定一组按照此规律分布的数据,用这组数据进行训练,看出来的网络能否作出准确预测。
数据输入: [[-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()

训练过程以及网络参数:
嵌入式系统|使用keras做线性回归训练记录
文章图片

可以看到,最后的输出模型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)

可以看到输出如下:
嵌入式系统|使用keras做线性回归训练记录
文章图片

我们套用上面的公式,实际计算一下准确值
嵌入式系统|使用keras做线性回归训练记录
文章图片

嵌入式系统|使用keras做线性回归训练记录
文章图片

可以看到,预测出来的值还是非常非常接近的。
这种方式到底有什么不同呢?
通常我们解决问题,希望由我们自己去找出规律,然后在由规律去解决问题,但是CNN却相反,我们不需要自己去找出规律,而是由模型自己去训练,得到规律,我们只要结果,一下子把我们从问题中解放了出来。如下图所示:
嵌入式系统|使用keras做线性回归训练记录
文章图片

跑上述模型的环境版本是:
嵌入式系统|使用keras做线性回归训练记录
文章图片

调试方式:
查看层的名称:
print(model.layers[2].name)

嵌入式系统|使用keras做线性回归训练记录
文章图片

获取weights 和 bias
weights, biases = model.layers[0].get_weights()

嵌入式系统|使用keras做线性回归训练记录
文章图片

如上图所是,训练得到的bias和weights和初始设定的2.0,3.0,1.0非常接近。
嵌入式系统|使用keras做线性回归训练记录
文章图片

查看参数形状
嵌入式系统|使用keras做线性回归训练记录
文章图片

训练的时候加入验证集
【嵌入式系统|使用keras做线性回归训练记录】嵌入式系统|使用keras做线性回归训练记录
文章图片

结束!

    推荐阅读