OpenCV 是否用零初始化权重矩阵,cv::ml::ANN_MLP
Does OpenCV initialize weights matrix with zeros, cv::ml::ANN_MLP
在OpenCV文档中提到过
人工神经网络 - 多层感知器。
与 ML 中的许多其他模型不同,这些模型是在 一旦,在MLP模型中,这些步骤是分开的。一、网络 使用非默认创建指定的拓扑 构造函数或方法 ANN_MLP::create。所有砝码均已设置 到零。然后,使用一组输入和 输出向量。训练过程可以重复多次, 也就是说,可以根据新的训练数据调整权重。
还提到:
UPDATE_WEIGHTS
更新网络权重,而不是从头开始计算它们。在后一种情况下,权重使用Nguyen-Widrow算法初始化。
所以我想知道当我开始训练模型时,权重初始化到底发生了什么。与OpenCV 3.3.1相关的答案也值得赞赏
你有什么理由怀疑文档吗?OpenCV是开源库,所以你可以在这里自己看到下面的内容
ANN_MLPImpl()
{
clear();
setActivationFunction( SIGMOID_SYM, 0, 0);
setLayerSizes(Mat());
setTrainMethod(ANN_MLP::RPROP, 0.1, FLT_EPSILON);
}
当您打电话时train
init_weights()
可能会被召唤
bool train( const Ptr<TrainData>& trainData, int flags )
{
// Some code
// ... and link weights
if( !(flags & UPDATE_WEIGHTS) )
init_weights();
// Even more code
这是init_weights()
void init_weights()
{
//... More code
// initialize weights using Nguyen-Widrow algorithm
for( j = 0; j < n2; j++ )
{
double s = 0;
// .. more initialization code
相关文章:
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 概念中的cv限定符需要表达式参数列表
- 将CHW格式的浮点向量转换为cv::Mat
- 错误的cv::face FacemarkLBF实例化
- 如何检查给定的参数是否为 cv::noArray()?
- 开放 CV 中的动态内存分配,用于视频处理
- 如何在 opencv 中使用 cv::VideoCapture::waitAny()
- 错误:未定义对cv::cudacodec::createVideoReader的引用
- OpenCV 3.4.1 error readNetFromTensorflow 无法在 cv::d nn::ReadProtoFromBinaryFile 中打开 .pb
- C++:从GPU内存(cudaMemcpy2D)获取BGR图像(cv::Mat)
- 选择基于另一个垫子的非零像素的cv::Mat的一部分?
- 将 cv::mat 转换为 QImage
- Inference pytorch C++ with alexnet and cv::imread image
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用
- cv::Normalise() 中的 L2_NORM 和 NORM_MINMAX 实现有什么区别?
- 将 cv::Mat 转换为 std::vector 的通用函数
- 使用CV :: ML :: STATMODEL :: TRAIN使用KNN的OPENCV错误
- OpenCV 是否用零初始化权重矩阵,cv::ml::ANN_MLP
- 使用CV :: ML :: Statmodel :: Calcerror使用在选定功能子集中训练的模型
- openCV 3.0:如何保存/加载cv::ml::boost模型