如果我在相同的数据上连续运行opencv MLP训练和分类,我会得到不同的结果。这意味着,如果我将训练新的mlp放在相同的训练数据上,并在for循环中对相同的测试数据进行分类,每次迭代都会给出不同的结果。
即使我每次迭代都会创建一个新的mlp对象。但是,如果不使用for循环,我只运行程序几次,在每次训练和分类后重新启动程序;结果完全相同。
因此,问题是,opencv是否使用以前的权重、变量或其他mlp训练中的类似内容?即使它不是相同的mlp对象。它为什么要这样做?
发布于 2015-06-17 04:37:12
到目前为止,我只做了一点探索,但我所看到的证实了我的第一个怀疑……
看起来好像每次启动程序时,随机数生成器都会被设定为一个固定值:
rng = RNG((uint64)-1);所以每次你运行这个程序,你都会生成相同的随机序列。通过在循环中运行,您可以继续生成序列中的下一个随机数,它(通常)不同于上一个序列。
https://stackoverflow.com/questions/30811584
复制相似问题