神经网络中的分割故障

| 我一直在使用反向传播算法编写用于神经网络的代码,并在传播输入时编写了以下代码,但是仅对于两个输入,它显示了分段错误。代码是否有错误。我想不通出来...
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\";
}
    
已邀请:
for(int i = 0;i < neuronsInLayer[next];i++)...
NeuronsInLayer [next]是一个指针。也许如果我知道NeuronsInLayer的类型,我可以为您提供更多帮助。     
那里没有足够的信息来调试您的代码。没有有关行号或如何在内存中布局结构或哪些有效的信息,等等。 因此,让我告诉您如何自己找到它。如果您使用的是Unix / Mac,请在可执行文件a.out上使用GDB调试器:
$ gdb a.out
> run
*segfault*
> where
Visual Studio也具有出色的调试器,只需在Debug模式下运行它,它就会告诉您段错误在哪里,并让您检查内存。     

要回复问题请先登录注册