首页 理论教育 如何通过mxnet训练一个二分类模型?

如何通过mxnet训练一个二分类模型?

时间:2023-06-28 理论教育 版权反馈
【摘要】:借用mxnet包中的mx.mlp函数和mlbench包数据设计一个二分类网络。准备数据,并进行简单的预处理借用mlbench包中的一个二分类数据,并且将它分成训练集和测试集。>require>require>data>Sonar[,61]=as.numeric-1>train.ind=c>train.x=data.matrix>train.y=Sonar[train.ind,61]>test.x=data.matrix>test.y=Sonar[-train.ind,61]建模mxnet提供了一个训练多层神经网络的函数mx.mlp,可以通过它来训练一个神经网络模型。模型部署模型训练好之后,可以很简单地进行预测:>preds=predictAuto detect layout of input matrix,userowmajor..>pred.label=max.col-1>table如果进行的是多分类预测,mxnet的输出格式是类数×样本数。

如何通过mxnet训练一个二分类模型?

【例9.1】借用mxnet包中的mx.mlp函数和mlbench包数据设计一个二分类网络。

(1)准备数据,并进行简单的预处理

借用mlbench包中的一个二分类数据,并且将它分成训练集和测试集。

>require(mlbench)

>require(mxnet)

>data(Sonar,package="mlbench")

>Sonar[,61]=as.numeric(Sonar[,61])-1

>train.ind=c(1:50,100:150)

>train.x=data.matrix(Sonar[train.ind,1:60])

>train.y=Sonar[train.ind,61]

>test.x=data.matrix(Sonar[-train.ind,1:60])

>test.y=Sonar[-train.ind,61]

(2)建模

mxnet提供了一个训练多层神经网络的函数mx.mlp,可以通过它来训练一个神经网络模型。

>mx.set.seed(0)

>model<-mx.mlp(train.x, #训练数据

>train.y, #响应变量

>hidden_node=10, #隐藏层的结点数量

>out_node=2, #输出层的结点数

>out_activation="softmax", #激活函数

>num.round=20,

>array.batch.size=15,(www.xing528.com)

>learning.rate=0.07, #学习

>momentum=0.9,

>eval.metric=mx.metric.accuracy #损失函数类型

Auto detect layout of input matrix,userowmajor..

Start training with 1 devices

[1]Train-accuracy=0.488888888888889

[2]Train-accuracy=0.514285714285714

[3]Train-accuracy=0.514285714285714

[18]Train-accuracy=0.838095238095238

[19]Train-accuracy=0.838095238095238

[20]Train-accuracy=0.838095238095238

这里要注意,使用mx.set.seed而不是R自带的set.seed函数来控制随机数。因为mxnet的训练过程可能会运行在不同的运算硬件上,这里需要一个足够快的随机数生成器来管理整个随机数生成的过程。

(3)模型部署

模型训练好之后,可以很简单地进行预测:

>preds=predict(model,test.x)

Auto detect layout of input matrix,userowmajor..

>pred.label=max.col(t(preds))-1

>table(pred.label,test.y)

如果进行的是多分类预测,mxnet的输出格式是类数×样本数。

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

我要反馈