Opencv mlp 相同数据不同结果

Opencv mlp Same Data Different Results

如果我 运行 opencv MLP 在相同数据上连续训练和分类,我会得到不同的结果。意思是,如果我在相同的训练数据上训练一个新的 mlp 并在 for 循环中对相同的测试数据进行分类,每次迭代都会给我不同的结果。

即使我每次迭代都创建一个新的 mlp 对象。但是,如果不是使用 for 循环,我只是 运行 程序几次,在每次训练和分类后重新启动程序;结果完全一样。

所以问题是,opencv 是否使用以前的权重、变量或其他 mlp 训练中的某种东西?即使它不是同一个 mlp 对象。为什么要这样做?

到目前为止我只做了一点点探索,但我所看到的证实了我的第一个怀疑...

看起来好像每次启动程序时,随机数生成器都会播种到一个固定值:

rng = RNG((uint64)-1);

因此,每次您 运行 程序都会生成相同的随机序列。通过 运行 循环,您将继续生成序列中的下一个随机数,这与上一个序列(通常)不同。