OpenCv ANN训练相同数据的不同输出

时间:2015-09-03 18:35:53

标签: c++ opencv image-processing machine-learning artificial-intelligence

我使用openCV的ANN进行图像分类。我有每个图像的特征向量,我训练这些向量 CvANN_MLP.train()方法。

我的问题是为什么,我总是在相同的数据上获得不同的网络设置。 例如,如果我在循环三次中执行训练过程和预测程序(相同的数据,相同的功能,相同的网络设置)。我将获得三种不同的网络配置和三种不同的输出(例如完全不同的精确率,例如60%,70%,90%)。

我认为结果网络应该在具有相同设置的相同数据上每次都相同,但它不是:/。任何想法为什么? 我在网上发现“偏见”值有可能影响,但我找不到如何更改bias值。

如果您有任何想法或相关链接,请告诉我。

1 个答案:

答案 0 :(得分:0)

它取决于算法和初始化,从我所知道的典型前馈NN和BackPropagation与梯度下降算法:

此类NN的典型训练算法是随机初始化NN的权重(起始点),NN本身具有许多局部优化,因此您可以找到许多不同的次优解,如果从不同的初始化开始,您可能会发现另一种方案。这就是为什么最终的解决方案很大程度上取决于起点。

因此,如果您保持所有参数和初始化相同,您将找到相同的解决方案。

我并不完全了解NN的OpenCV API,也不知道如何强制它不是随机地初始化NN,但也许你可以找到一些参数来提供伪随机数生成器种子进入它。

你可以谷歌任何关于NN初始化的论文,因为选择NN的起点是一个众所周知的问题,并且在大多数情况下随机初始化并不好,但它很简单。 您只需阅读hereherehere

的摘要