首页 理论教育 应用Rdbn技术的效果和方法探析

应用Rdbn技术的效果和方法探析

时间:2023-06-28 理论教育 版权反馈
【摘要】:基于Vehicle数据集训练分类器。加载依赖的包>require>data>require最优神经网络协方差变换>x<-t>y<-Vehicle[,19]>for{x[i,]<-/}数据准备set.seed #参数不同结果不同trainIndx<-sampletestIndx<-c[!如果每个mini-batch训练样本包含了所有类别的样本,就可以更换Rdbn的输入顺序。模型部署pred_dbn<-dbn.predictprint另外,网络训练策略可以独立地应用,这提供了额外的控制训练参数,可以使模型有更好的性能。>db<-dbndb<-dbn.pretrain微调使用带学习参数的反向传播算法。

应用Rdbn技术的效果和方法探析

【例11.2】基于Vehicle数据集训练分类器

(1)加载依赖的包

>require(mlbench)

>data(Vehicle)

>require(Rdbn)

(2)最优神经网络协方差变换

>x<-t(Vehicle[,c(1:18)])

>y<-Vehicle[,19]

>for(i in c(1:(NCOL(Vehicle)-1))){

x[i,]<-(Vehicle[,i]-min(Vehicle[,i]))/(max(Vehicle[,i])-min(Vehicle[,i]))

}

(3)数据准备

set.seed(34) #参数不同结果不同

trainIndx<-sample(c(1:NCOL(x)),NCOL(x)∗0.8,replace=FALSE)

testIndx<-c(1:NCOL(x))[!(c(1:NCOL(x))%in%trainIndx)]

(4)建模

>db<-dbn(x=x[,trainIndx],

y=y[trainIndx],

layer_sizes=c(18,100,150),

batch_size=10,

momentum_decay=0.9,

learning_rate=0.1,

weight_cost=1e-4,

n_threads=8)

在训练网络时,重要的是每个mini-batch样本集要包含用于分类正例和反例,因为Rdbn不能改变样本的顺序。

如果每个mini-batch训练样本包含了所有类别的样本,就可以更换Rdbn的输入顺序。下面脚本使用的函数shuffle返回的样本不排序,可以推广到多类情况。(www.xing528.com)

shuffle函数把样本后面的50%放到前面。

(5)模型部署

pred_dbn<-dbn.predict(db,data=x[,testIndx],n_threads=8)

print(paste("%correct(dbn):",sum(pred_dbn==as.character(y[testIndx]))

/NROW(y[testIndx])))

另外,网络训练策略可以独立地应用,这提供了额外的控制训练参数,可以使模型有更好的性能。

>db<-dbn(layer_sizes=c(18,100,150),

batch_size=10,

cd_n=1,

momentum_decay=0.9,

learning_rate=0.1,

weight_cost=1e-4)

db<-dbn.pretrain(db,data=x[,trainIndx],n_epocs=50,n_threads=8)

微调使用带学习参数的反向传播算法

db_refine<-dbn.refine(db,

data=x[,trainIndx],

labels=y[trainIndx],

n_epocs=100,

rate_mult=10,

n_threads=8)

pred_dbn<-dbn.predict(db_refine,data=x[,testIndx],n_threads=8)

print(paste("%correct(dbn):",sum(pred_dbn==as.character(y[testIndx]))

/NROW(y[testIndx])))

文件夹“Rdbn/test_functions”还有一个相关的例子。

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

我要反馈