实现高斯可见单元 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
有两个没有默认值的参数:
将pow(ph_mean[i] * input[j])*(ph_mean[i] * input[j])
更改为
pow((ph_mean[i] * input[j]),2)
将为您评估产品的平方
我已经使用二进制数据实现了 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
有两个没有默认值的参数:
将pow(ph_mean[i] * input[j])*(ph_mean[i] * input[j])
更改为
pow((ph_mean[i] * input[j]),2)
将为您评估产品的平方