我一直在使用反向传播算法为神经网络编写代码,并且为了传播输入,我编写了以下代码,但仅针对两个输入,它显示分段错误。代码有任何错误。我不能够想出来......
void propagateInput(int cur,int next)
{
cout<<"propagating input"<<cur<<" "<<next<<endl;
cout<<"Number of nerons : "<<neuronsInLayer[cur]<<" "<<neuronsInLayer[next]<<endl;
for(int i = 0;i < neuronsInLayer[next];i++)
{
neuron[next][i].output = 0;
for(int j = 0;j < neuronsInLayer[cur];j++)
{
cout<<neuron[cur][j].output<<" ";
cout<<neuron[next][i].weight[j]<<"\n";
neuron[next][i].output += neuron[next][i].weight[j] * neuron[cur][j].output;
}
cout<<"out["<<i<<"] = "<<neuron[next][i].output<<endl;
}
cout<<"completed propagating input.\n";
}
答案 0 :(得分:0)
for(int i = 0;i < neuronsInLayer[next];i++)...
neuronsInLayer [next]是一个指针。也许如果我知道神经元的类型,我可以帮助你更多。
答案 1 :(得分:0)
调整代码的信息不足。没有关于行号的信息或结构如何在内存中布局或哪些是有效的等等。
那么让我告诉你如何自己找到它。如果您使用的是Unix / Mac,则在可执行文件上使用GDB调试器,a.out:
$ gdb a.out
> run
*segfault*
> where
Visual Studio也有一个很好的调试器,只需在调试模式下运行它,它会告诉你segfault的位置并让你检查内存。