rbm中的高斯可见单位

时间:2013-11-24 01:01:07

标签: rbm

我想实现高斯RBM。因为我想要使数据的均值和单位方差为零。我的数据是MNIST数据集。数据集已经从以下链接获取并遵循。

访问http://www.cs.toronto.edu/~hinton/code/makebatches.m

所以我以下面的方式实现。但是我的数据变成了NAN。在将数据除以标准偏差后变为NAN。

for epoch = epoch:maxepoch,
fprintf(1,'epoch %d \r',epoch); 
errsum=0;
for batch = 1:numbatches,
fprintf(1,'epoch %d batch %d \r',epoch,batch); 

%开始正面阶段

data = batchdata(:,:,batch);

%零均值和单位方差

data_mean = mean(data,1);
data=bsxfun(@minus,data,data_mean);
data_std = std(data1,[],1);
data=bsxfun(@rdivide,data,data_std);

我用一小组例子尝试了这个。它效果很好。成为NAN的原因是什么。

如何摆脱这种情况并使高斯输入具有零均值和单位方差。

2 个答案:

答案 0 :(得分:1)

我建议在开始GBRBM培训之前规范化数据的均值和方差。这样您就可以在MATLAB工作区中手动检查batchdata变量。 在训练GBRBM时,当我的学习率太高时,我经常将NaN视为训练/验证错误。它应该有助于将学习率设置为低于或等于0.001。

答案 1 :(得分:0)

您似乎在“data_std = ...”代码中使用了未定义的变量“data1”而不是“数据”。