-1

我一直在使用反向传播算法为神经网络编写代码,并为传播输入编写了以下代码,但仅针对两个输入,它显示分段错误。代码有什么问题。我无法弄清楚出去....

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

2 回答 2

0
for(int i = 0;i < neuronsInLayer[next];i++)...

神经元InLayer[next] 是一个指针。也许如果我知道神经元InLayer 的类型,我可以为您提供更多帮助。

于 2011-05-02T05:30:12.443 回答
0

这远没有足够的信息来调试您的代码。没有关于行号或结构在内存中的布局方式或哪些有效等信息。

所以让我告诉你如何自己找到这个。如果您使用的是 Unix/Mac,则在您的可执行文件 a.out 上使用 GDB 调试器:

$ gdb a.out
> run
*segfault*
> where

Visual Studio 也有一个很棒的调试器,只需在调试模式下运行它,它就会告诉你段错误在哪里,并让你检查内存。

于 2011-05-02T05:31:37.150 回答