Ошибка сегментации в нейронной сети - PullRequest
0 голосов
/ 02 мая 2011

Я писал код для нейронной сети с использованием алгоритма обратного распространения и для распространения входных данных. Я написал следующий код, но только для двух входов, в которых отображается ошибка сегментации. Есть ли какой-то неправильный код.чтобы понять это ...

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 голосов
/ 02 мая 2011

Этой информации недостаточно для отладки вашего кода. Нет информации о номерах строк или о том, как структуры размещены в памяти или какие из них действительны и т. Д.

Итак, позвольте мне рассказать вам, как вы можете найти это самостоятельно. Если вы используете Unix / Mac, тогда используйте отладчик GDB на вашем исполняемом файле, a.out:

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

Visual Studio также имеет отличный отладчик, просто запустите его в режиме отладки, и он сообщит вам, где находится segfault, и позволит вам проверить память.

0 голосов
/ 02 мая 2011
for(int i = 0;i < neuronsInLayer[next];i++)...

neuronsInLayer [next] является указателем.возможно, если бы я знал тип нейронов в слое, я мог бы помочь вам больше.

...