实现高斯可见单元 C++

implementing Gaussian Visible units c++

我已经使用二进制数据实现了 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]);
}

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

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

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

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

将为您评估产品的平方