rbm中的高斯可见单位

  • 本文关键字:单位 高斯可 rbm 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的原因是什么。

如何消除这一点,使高斯输入具有零均值和单位方差。

我建议在开始GBRBM培训之前,对数据的均值和方差进行归一化。这将使您能够在MATLAB工作空间中手动检查batchdata变量。在训练GBRBM时,当我的学习率过高时,我经常将NaN视为训练/验证错误。将学习率设置为0.001以下应该会有所帮助。

您在"data_std=…"代码中似乎使用了一个未定义的变量"data1",而不是"data"。

相关内容

  • 没有找到相关文章

最新更新