首页 理论教育 回归模型与自定义神经网络的比较分析

回归模型与自定义神经网络的比较分析

时间:2023-06-28 理论教育 版权反馈
【摘要】:mx.mlp接口固然很方便,但是神经网络的一大特点便是它的灵活性,不同的结构可能有着完全不同的特性。mxnet的亮点之一便是它赋予了用户极大的自由度,从而可以任意定义需要的神经网络结构。使用mxnet提供了“Symbol”系统,建立回归预测模型。定义了神经网络之后,便可以使用mx.model.FeedForward.create进行训练了。

回归模型与自定义神经网络的比较分析

mx.mlp接口固然很方便,但是神经网络的一大特点便是它的灵活性,不同的结构可能有着完全不同的特性。mxnet的亮点之一便是它赋予了用户极大的自由度,从而可以任意定义需要的神经网络结构。本节用一个简单的回归任务来介绍其相关的语法。

【例9.2】使用mxnet提供了“Symbol”系统,建立回归预测模型。

(1)数据准备

>data(BostonHousing,package="mlbench")

>train.ind=seq(1,506,3)

>train.x=data.matrix(BostonHousing[train.ind,-14])

>train.y=BostonHousing[train.ind,14]

>test.x=data.matrix(BostonHousing[-train.ind,-14])

>test.y=BostonHousing[-train.ind,14]

(2)建模

mxnet提供了一个叫作“Symbol”的系统,从而可以定义结点之间的连接方式与激活函数等参数。下面是一个定义没有隐藏层神经网络的简单例子:

>data<-mx.symbol.Variable("data")#定义输入数据

>fc1<-mx.symbol.FullyConnected(data,num_hidden=1)

>lro<-mx.symbol.LinearRegressionOutput(fc1)#定义损失函数

在神经网络中,回归与分类的差别主要在于输出层的损失函数。这里使用平方误差来训练模型。希望进一步了解Symbol的读者可以继续阅读相关文档。

定义了神经网络之后,便可以使用mx.model.FeedForward.create进行训练了。

>mx.set.seed(0)

>model<-mx.model.FeedForward.create(lro,

X=train.x,

y=train.y,

ctx=mx.cpu(),

num.round=50,

array.batch.size=20,

learning.rate=2e-6,(www.xing528.com)

momentum=0.9,

eval.metric=mx.metric.rmse)

Autodetectlayoutofinputmatrix,userowmajor..

Starttrainingwith1devices

[1]Train-rmse=16.063282524034

[2]Train-rmse=12.2792375712573

[3]Train-rmse=11.1984634005885

[48]Train-rmse=8.26890902770415

[49]Train-rmse=8.25728089053853

[50]Train-rmse=8.24580511500735

(3)模型部署

这里针对回归任务修改了eval.metric参数。模型提供的评价函数包括“accura-cy”“rmse”“mae”和“rmsle”,用户也可以针对需要自定义评价函数,例如:

Autodetectlayoutofinputmatrix,userowmajor..

Starttrainingwith1devices

[1]Train-mae=13.1889538083225

[2]Train-mae=9.81431959337658

[3]Train-mae=9.21576419870059

[48]Train-mae=6.41731406417158

[49]Train-mae=6.41011292926139

[50]Train-mae=6.40312503493494

至此,mxnet使用方法已经基本掌握了。9.3.3节将介绍更有趣的应用。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈