我正在使用openCV的ANN进行图像分类。我对每个图像都有特征向量,并用CvANN_MLP.train()
方法训练这些向量。
我的问题是为什么,我总是在相同的数据上得到不同的网络设置。例如,如果我循环三次进行训练过程和预测过程(相同的数据,相同的特征,相同的网络设置)。我会得到三种不同的网络配置和三种不同的输出(比如完全不同的准确率,比如60%,70%,90%)。
我假设得到的网络每次都应该在相同的数据和相同的设置上是相同的,但它不是:/。你知道为什么吗?我在网上发现“偏差”值可能会影响,但我找不到如何更改bias
的值。
如果您有任何想法或相关链接,请让我知道。
发布于 2015-09-04 03:23:07
它取决于算法和初始化,根据我对典型的前馈神经网络和梯度下降算法的BackPropagation的了解:
这种神经网络的典型训练算法是随机初始化神经网络的权重(起始点),神经网络本身有许多局部最优,因此你可以找到许多不同的次优解,如果你从不同的初始化开始,你可能会找到另一个解决方案。这就是为什么最终的解决方案在很大程度上取决于起点。
因此,如果您将保持所有参数和初始化相同,您将找到相同的解决方案。
我不知道NN的确切OpenCV接口,也不知道如何强制它非随机地初始化NN,但也许你可以找到一些参数来给它提供伪随机数生成器种子。
你可以在谷歌上搜索任何关于神经网络初始化的论文,因为为神经网络选择起点是一个众所周知的问题,随机初始化在大多数情况下都不是很好,但它很简单。您可以只阅读here、here或here中的摘要
https://stackoverflow.com/questions/32383086
复制相似问题