我按照大多数文献中的建议将我的数据归一化为零均值和单位方差,以预先训练GB-RBM。但无论我选择什么样的学习率,无论什么时期,我的平均重建误差都不会低于0.6左右。 堆叠BB-RBM的重建误差在几个时期内容易下降到0.01。我已经使用了几个工具包来实现http://www.cs.toronto.edu/~hinton/absps/guideTR.pdf中提到的GBRBM,但都有相同的问题。我错过了什么或重建错误是否意味着保持在50%以上?
我通过减去平均值并除以输入向量的每个维度的标准差来规范我的数据:
尺寸(mfcc) - > [mlength rows x 39 cols]
mmean=mean(mfcc);
mstd=std(mfcc);
mfcc=mfcc-ones(mlength,1)*mmean;
mfcc=mfcc./(ones(mlength,1)*mstd);
这确实给出了每个维度的零均值和单位变量。我尝试了不同的数据集,不同的功能和不同的工具包,但我的reconstr错误从未降至GBRBM的0.6以下。 感谢
答案 0 :(得分:0)
我猜你会使用exp()作为sigmoid,然后使用第三方库来完成矩阵函数?
如果上述情况属实,我猜第三方库正在吞下exp()溢出错误,但仍停止计算,因此隐藏/重新创建的向量无效。
根据以下评论进行修改:
theano.tensor.nnet.sigmoid()正在使用exp()所以我首先尝试切换到hard_sigmoid()。它不会像曲线那么好,但它不会溢出/下溢,所以你可以看到它是否是错误的来源。
我假设您尝试过其他数据预处理并且仍然存在高重建错误?