每天给小编五分钟,小编用自己的代码,带你轻松学习深度学习!本文将会带你做完一个深度学习进阶版的线性回归---多项式线性回归,带你进一步掌握线性回归这一深度学习经典模型,然后在此基础上,小编将在下篇文章带你实现神经网络,并且用它实现对数据集的训练。野蛮智能,小白也能看懂的人工智能。
本文代码环境:Anaconda3+pytorch1.0,python版本为3.4-3.6,如果你还没有搭建好环境,可以参考小编的:文科生也能看懂的深度学习入门宝典:pytorch+tensorflow快速上手
关于多项式线性回归的前生今世小编已经在深度学习模型速成,三分钟解决经典线性回归模型(附完整代码)进行了讲解。本文要讲的是一个进阶版的线性回归---多项式线性回归。
多项式线性回归
多项式线性回归的最大优点就是把原来的x1,x2,x3,这些数据更加多层次的描述变成了,例如x1,就变成了三个对应权重分别乘以x1的一次方,x1的二次方,x1的三次方。这样做的好处是可以更加准确的描述数据的特点。方便我们在选择其他模型前,对数据有一个更好地预估。
多项式线性回归代码实现
讲解完了多项式线性回归的基本原理,下面进入代码的实现。代码如下:
代码略微有点长,但还是希望大家耐心看完。首选是导入必要的包,这一步操作和小编的深度学习模型速成,三分钟解决经典线性回归模型一文中的操作是一样一样的。然后make features函数是将原来的数据进行升维操作。将原来的数据由{x1,x2,x3,x4},变成{[x1**1,x1**2,x1**3],[x2**1,x2**2,x2**3]},然后数据就从一个维度变为了三个维度,这样可以更加具体的描述数据。画出来的曲线也更加具体,准确。
然后定义数据,定义好我们的数据集:x,和y=wx+b,这是我们希望将x作为数据集后训练得到的最拟合的结果。(注意,这里的w和x是矩阵,所以她们的乘法要用mm,mm指的是矩阵乘法)。最终通过,f(x)这一函数得到结果。
然后get_batch函数定义了一组训练集,和对应的结果y。并将其返回。poly_model是我们定义的模型。criterion指的是损失函数,optimizer选择了梯度下降法进行优化。最后在while(ture)下进行训练。
测试结果如下:
为了方便大家对比,我把蓝点向上移了一个单位。通过对比,我们发现,结果还是很准确的。野蛮智能,小白也能看懂的人工智能。欢迎大家评论。