如果我运行opencv MLP列车并连续对相同的数据进行分类,我会得到不同的结果。意思是,如果我在相同的列车数据上训练一个新的mlp并在for循环中对相同的测试数据进行分类,每次迭代都会给我不同的结果。
即使我每次迭代都要创建一个新的mlp对象。但是,如果不是使用for循环,我只需运行几次程序,在每列火车后重新启动程序并进行分类;结果完全一样。
所以问题是,opencv是否使用以前的权重,变量或其他类似的其他mlp列车?即使它不是同一个mlp对象。为什么这样做?
答案 0 :(得分:0)
我到目前为止只做了一点点蠢事,但我所看到的证实了我的第一个怀疑...
看起来每次启动程序时,随机数生成器都会播种到固定值:
rng = RNG((uint64)-1);
因此,每次运行程序时,您都会生成相同的随机序列。通过循环运行,您将继续生成序列中的下一个随机数,这与通常与最后一个序列不同。