变化无法看到

时间:2017-10-25 07:37:55

标签: c++ variables

我(试图)编写一个程序,它是一种简化的神经网络,其中offby是我测量神经网络在这次迭代中接近目标值的函数。它似乎工作得很好,除了(看似随机)它有时会为offby赋予负值。

offby可以更改的唯一代码块是(除了在每次迭代开始时将其设置回0):

offby = offby + std::abs((sigmoid(outcome[k]) - goal));

在那段代码之后我输出了offby值,它运行正常。然后我在下面有一些代码(它改变了网络中其中一个连接的值)。

std::cout << "Offby is before 5: " << offby << "\n";
std::uniform_int_distribution<int> which_unit(0, unitsinlayer3);
std::uniform_int_distribution<int> which_connection(0, unitsinlayer4);
one = which_unit(rng);
two = which_connection(rng);
thirdtofourth[one][two] = +mutateby;
std::cout << "Offby is after 5: " << offby << "\n";

at&#34; offby是在5&#34;之前它仍然输出正确的值,然后在&#34; offby是在5&#34;之后它有时输出负值。从来没有其他代码介于两者之间,唯一的原因是我甚至弄清楚了代码的这一部分以某种方式分配负值是通过几乎每一段代码输出它并看到它改变的地方。

现在我可能会遗漏一些完全明显的东西,但是如何更改这些其他变量可能会改变我的offby值?

如果这是相关的,则mutateby分配如下(代码中的早期)

std::normal_distribution<double> mutation(0, 0.1);
double mutateby = mutation(rng);

就像一个例子,这恰好发生在我运行程序时:

Offby在5:0.000000之前

Offby是在5:-0.056328之后

非常感谢任何帮助。

编辑:原来它在这一行中有所改变:

thirdtofourth[one][two] = +mutateby;

0 个答案:

没有答案