基于tensorflow实现的线性回归模型

遇到的问题以及解决方案

  1. Question1:对于随机生成的x,y训练出来的拟合直线效果不理想。

解决方案:将权重的标准差调整为0后效果仍然不理想,然后根据线性回归的流程,对所有参数设置的一一进行排查,最后将错误定位到梯度下降法的步长,起初设置为0.0001,导致步长太小,使得直线拟合速度太慢,迭代5000步后仍然无法达到理想程度,因此加大步长,加快拟合速度,但步长又不可以太大,会导致最终结果在最佳收敛点附近徘徊。

调整随机分布的y的方差的结果:

                      

     图2:y值方差为0.1的拟合结果图

图3:y值方差为0.4的拟合结果图

从上图分析,改变y的方差值,三点均匀的分布在直线两侧,则说明拟合的结果较为不错。

  1. 调整梯度下降法的步长

         

图4:步长为0.01的拟合结果图

图5:步长为0.0001的拟合结果

从上图分析,步长太小会导致拟合速度变慢。

用tensorboard可视化线性回归模型:

                          

图6:损失值变化曲线图

由上图可知,在迭代到700步之前,损失值迅速下降,迭代到600步之后,损失之几乎没有变化,呈现一条水平的直线,其值为0.1856。

                        

                     图7:线性回归数据流图

                                 图8:parameters结点中地内部结构图

由图7可以清晰地分析出各个结点之间地数据流向,结点表示一个命名空间,直线上的数据表示有多少个张量(数据)从一个结点流向另一个结点。双击其中一个结点patameters,如图8所示,又可以清楚地看到其内部包含两个变量,分别为weights和biases。

                                             

                                                               图9:偏差变化图

                                               

                图10:权重变化图

图9分析可得,偏差在刚开始迭代时迅速下降,然后又迅速上升,大约迭代到700步之后区域稳定。

图10分析可得,在迭代到700步之前,权重迅速上升,700步之后趋于平衡,其值大约为1.40。

                                                  

图11:偏差直方图

                          图12:权重直方图

经验与总结

1.模型的优缺点分析

优点:本次实验实现的是最简单的一元线性回归,实现方式较为简单,理解起来较为容易,适合tensorflow初学者快速入门。

缺点:

  • 线性回归模型的实际意义是用于预测,而本实验是随机生成的原始数据,没有实际含义,不可以应用到实际应用问题中。
  • 只设置了一个特征,不可以预测多特征的复杂线性回归问题,模型过于简单.
  1. 设计与实现过程中的各种错误与解决方法

模型中的相关参数设置:由于是tensorflow初学者,对线性回归中的相关参数设置一头雾水,导致拟合的结果不理想,通过查阅资料以及对线性回归模型的深入理解,根据实际模型不断地去调整参数,最后达到理想结果。

  1. 改进与拓展

根据模型分析的优缺点,可以将单一特征的线性回归模型改进为多特征的线性回归模型,设置多个权重(w1,w2....)。随机生成样本点不具有实际意义,也不利于初学者对线性回归模型的深入理解,可以通过具体的例子来理解,比如说可以参考房价预测模型,根据房子的大小,所处区域以及其他特征建立线性回归模型,最后得到的模型,可以用来预测更多其他房子的房价,更具有实际应用价值。

最后附上github链接https://github.com/aiyadehaijiao/LinearRegression

以及tensorborad的使用方法:https://blog.csdn.net/lin453701006/article/details/79391088

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章