为什么代码告诉我vectorsubsibrtion超出了范围

Why does the code tell me Vectorsubscribtion is out of range

本文关键字:范围 vectorsubsibrtion 代码 告诉我 为什么      更新时间:2023-10-16

我为神经元网制作了一个程序,一切都很好,但是这些代码行:

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];

            }
        }
    }

执行错误向量订阅范围,我正在尽力而为,但找不到错误

您有此错误

for (unsigned l = 0; l < Net[i].size(); i++)

应该是

for (unsigned l = 0; l < Net[i].size(); l++)

使用称为l的变量确实不是一个好主意,对于i1

太容易了

您在第二个循环中犯了一个错误,'i'在第二个循环声明中被增加,'i'的值超过了您的向量大小。

只是替换:

for (unsigned l = 0; l < Net[i].size(); i++)

with:

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];