神经网络中的分割故障

时间:2011-05-02 05:27:46

标签: c++ segmentation-fault neural-network fault

我一直在使用反向传播算法为神经网络编写代码,并且为了传播输入,我编写了以下代码,但仅针对两个输入,它显示分段错误。代码有任何错误。我不能够想出来......

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";
}

2 个答案:

答案 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的位置并让你检查内存。