我为Neuronal网络编写了一个程序,除了以下几行代码外,一切工作正常:
for (unsigned i = 0; i < Net.size() - 1; i++)
{
//Net is a vector of Layers, Layers are a vector of neurons, and Neurons are a Vector of weights and a double "values", the weights are also doubles
for (unsigned l = 0; l < Net[i].size(); i++)
{
for (unsigned k = 0; k < Net[i][l].weights.size(); k++)
{
Net[i + 1][k].value = sigmoid(Net[i + 1][k].value);
Net[i+1][k].value += Net[i][l].value* Net[i][l].weights[k];
}
}
}
执行错误矢量订阅超出范围,我正在尽力而为,但是我找不到错误
答案 0 :(得分:1)
您在第二个for循环中犯了一个错误,在第二个for循环声明中'i'正在递增,并且'i'的值超出了向量的大小。
只需替换:
for (unsigned l = 0; l < Net[i].size(); i++)
与:
for (unsigned l = 0; l < Net[i].size(); l++)
我相信您还有第二个错误:
Net[i + 1][k]
应在三个位置(**之间)替换为:
Net[i + 1][l]
**Net[i + 1][k]**.value = sigmoid(**Net[i + 1][k]**.value);
**Net[i+1][k]**.value += Net[i][l].value* Net[i][l].weights[k];
答案 1 :(得分:1)
您遇到此错误
for (unsigned l = 0; l < Net[i].size(); i++)
应该是
for (unsigned l = 0; l < Net[i].size(); l++)
使用名为l
的变量确实不是一个好主意,很容易将i
或1
弄错。