实现高斯可见单位c ++

时间:2015-11-30 09:50:16

标签: c++ gaussian

我已经使用二进制数据实现了RBM并且它可以工作。但是现在我一直试图改变我的能量函数,以便它需要真实的数据(高斯可见单位RBM)。但是当我编译我的代码时,我收到以下错误:

 error C2661: 'pow' : no overloaded function takes 1 arguments

此处下面只是我代码的修改部分:

for(int i = 0; i < n_hidden; i++) 
{
    for(int j = 0; j < n_visible; j++) 
    {
            //W[i][j] += lr * (ph_mean[i] * input[j] - nh_means[i] * nv_means[j]);
            // trying to compute the Gaussian visible units

            W[i][j] += lr * (pow(ph_mean[i] * input[j])*(ph_mean[i] * input[j])/2 - nh_means[i] * nv_means[j]);
    }
    hbias[i] += lr * (nh_means[i] - ph_mean[i]);
}

2 个答案:

答案 0 :(得分:0)

根据文档,pow采用两个没有默认值的参数:

http://www.cplusplus.com/reference/cmath/pow/

答案 1 :(得分:0)

pow(ph_mean[i] * input[j])*(ph_mean[i] * input[j])更改为

pow((ph_mean[i] * input[j]),2)

将为您评估产品的平方。