问题描述
我在一个神经网络上工作,尝试执行Sigmoid函数时,它显示了一个我不理解的错误:对二进制^无效的操作数(具有'double'和'int')。这是我的代码:
double neuron(const int num_in,const double input[num_in],const double weight[num_in],const double bias) {
int i;
int asubj = 0;
int zsubj;
for (i = 0; i < num_in; i++)
{
asubj = asubj + input[i]*weight[i]+bias;
}
zsubj = (1)/(1 - (int)(M_E)^(-asubj)); // When I run the program,it stops here,I don
return 0;
}
任何帮助将不胜感激。
解决方法
正如其他地方所述,^
是C语言中的异或运算符。以下内容可能会做一些您想要的更好的事情:
double neuron(const int num_in,const double input[num_in],const double weight[num_in],const double bias)
{
int i;
double asubj = 0.0;
double zsubj;
for (i = 0; i < num_in; i++)
asubj = asubj + input[i]*weight[i]+bias;
zsubj = 1.0 / (1.0 - pow(M_E,-asubj));
return 0;
}
请注意,上面的代码将return 0;
保留在原始功能的末尾。