OpenCv神经网络训练相同的数据不同的输出
OpenCv ANN training same data different outputs
我使用来自openCV的ANN进行图像分类。我有每个图像的特征向量,我训练这些向量CvANN_MLP.train()
方法。
我的问题是为什么,我总是在相同的数据上得到不同的网络设置。例如,如果我循环三次训练过程和预测过程(相同的数据,相同的特征,相同的网络设置)。我将得到三种不同的网络配置和三种不同的输出(就像完全不同的精度率,例如60%,70%,90%)。
我假设在相同的数据上使用相同的设置得到的网络每次都是相同的,但它不是:/。知道为什么吗?我在网上发现"偏差"值有可能影响,但我找不到如何改变bias
值。
如果您有任何想法或相关链接,请告诉我。
这取决于算法和初始化,从我所知道的典型前馈神经网络和带梯度下降算法的反向传播:
对于这类NN的典型训练算法随机初始化NN的权重(起始点),NN本身有许多局部最优,因此你可以找到许多不同的次优解,如果你从不同的初始化开始,你可能会找到另一个解。这就是为什么最终的解决方案很大程度上取决于起点。所以如果你保持所有参数和初始化相同,你会找到相同的解。
我不知道NN的确切OpenCV API,也不知道如何强制它初始化NN不是随机的,但也许你可以找到一些参数来给它提供伪随机数生成器种子。
你可以谷歌任何关于神经网络初始化的论文,因为选择神经网络的起点是一个众所周知的问题,随机初始化在大多数情况下都不好,但它很简单。你可以在这里,这里或这里阅读摘要
相关文章:
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 使用 python 或 c ++ 中的 sql 根据输入数据输出输出示例
- 尝试从 txt 文件中读取两条数据并输出它们 [C++]
- 将多个效果与 libSox 链接并读取输出数据的正确方法
- 如何将函数的输出数据存储在文本文件中
- 如何从amd gpus的显示输出中获取图像数据
- 自定义堆栈上 std::string 数据的输出
- 如何从文本文件输出数据?(学生成绩单计划)
- 为什么我的数据/输出文件为空?
- C++:如何将数据输出到多个.dat文件
- C++:将存储在List容器中的数据输出到文本文件中
- .wav C++数据输出不正确
- C++:模拟餐饮公司计费程序-无法将错误数据输出到错误文件
- 使用iomanip将数据输出格式化为具有Qt的文本文件
- matPutVariable:尝试将数据输出到mat文件时出错(matrix::serialize::WrongSize
- 如何使用类似于gcc-xml的clang生成元数据输出
- 如何使用Python从UART Beaglebone获取数据输出
- GP635T gps传感器的数据输出
- 如何在Windows控制台中将数据输出到自定义流(3>4>等)?
- 流数据输出问题