【例7.1】用Mobility数据结构构建RBM。
(1)加载所需的包和数据
>require(RcppDL)
>require("ltm")
>data(Mobility)
>data<=Mobility
RcppDL包包含有评估RBM的函数,ltm包含有Mobility数据集。采样1000个观测值,其中800用作训练集,数据结构见表6.1。
>set.seed(2395)
>n=nrow(data)
>sample<-sample(1:n,1000,FALSE)
>data<-as.matrix(Mobility[sample,])
>n=nrow(data)
>train<-sample(1:n,800,FALSE)
(2)数据准备
>x_train<-matrix(as.numeric(unlist(data[
train,])),nrow=nrow(data[train,]))
>x_test<-matrix(as.numeric(unlist(data[
-train,])),nrow=nrow(data[-train,]))
>x_train<-x_train[,-c(4,6)] #删除训练集第4和第6列
>x_test<-x_test[,-c(4,6)] #删除测试集第4和第6列
>head(x_train)
>head(x_test)
(3)构建RBM
>fit<-Rrbm(x_train)
设定隐含层3个结点的学习率为0.01。
>setHiddenRepresentation(fit,x=3)
>setLearningRate(fit,x=0.01)
模型的摘要:
>summary(fit)
$LearningRate
[1]0.01
$ContrastiveDivergenceStep
[1]1
$TrainingEpochs
[1]1000
$HiddenRepresentation(www.xing528.com)
[1]3
模型训练代码:
>train(fit)
可以在Rrbm中设定很多参数,包括:
● setStep signature
● setLearningRate
● setTrainingEpochs
(4)模型部署
reconProb<-reconstruct(fit,x_train)
>head(reconProb,6)
将概率转化为二进制值:
>recon<-ifelse(reconProb>=0.5,1,0)
查看重建的值:
>head(recon)
创建混合矩阵:
>table(recon,x_train,dnn=c("Predicted","Observed"))
如图7.4所示,图像重建虽然不是RBM的核心,但包含了RBM的主要特征。
>par(mfrow=c(1,2))
>image(x_train,main="Train")
>image(recon,main="Reconstruction")
也可以使用deepnet包评估RBM,方法如下:
>fit2<-rbm.train(x_train,
hidden=3,
numepochs=3,
batchsize=100,
learningrate=0.8,
learningrate_scale=1,
momentum=0.5,
visible_type="bin",
hidden_type="bin",
cd=1)
图7.4 使用RBM对Mobility的重建
注意,rbm.train允许指定块的大小,块的大小在大的样本中非常重要。RBM是非常强大的学习机器,但是它们最重要的用途是作为深度置信网络的构建而使用的学习方法,细节见第8章。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。