OpenCv神经网络训练相同的数据不同的输出

OpenCv ANN training same data different outputs

本文关键字:数据 输出 神经网络 OpenCv      更新时间:2023-10-16

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

我的问题是为什么,我总是在相同的数据上得到不同的网络设置。例如,如果我循环三次训练过程和预测过程(相同的数据,相同的特征,相同的网络设置)。我将得到三种不同的网络配置和三种不同的输出(就像完全不同的精度率,例如60%,70%,90%)。

我假设在相同的数据上使用相同的设置得到的网络每次都是相同的,但它不是:/。知道为什么吗?我在网上发现"偏差"值有可能影响,但我找不到如何改变bias值。

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

这取决于算法和初始化,从我所知道的典型前馈神经网络和带梯度下降算法的反向传播:

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

所以如果你保持所有参数和初始化相同,你会找到相同的解。

我不知道NN的确切OpenCV API,也不知道如何强制它初始化NN不是随机的,但也许你可以找到一些参数来给它提供伪随机数生成器种子。

你可以谷歌任何关于神经网络初始化的论文,因为选择神经网络的起点是一个众所周知的问题,随机初始化在大多数情况下都不好,但它很简单。你可以在这里,这里或这里阅读摘要