【问题标题】:Opencv mlp Same Data Different ResultsOpencv mlp相同的数据不同的结果
【发布时间】:2015-08-28 23:11:26
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ opencv machine-learning neural-network


    【解决方案1】:

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

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

    rng = RNG((uint64)-1);
    

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

    【讨论】:

    • 是的,就是这样!如果我每次迭代都将种子重置为原始值,结果是一样的!谢谢!
    • 很高兴为您提供帮助!请记住接受能回答您问题的答案。
    猜你喜欢
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多