OpenCV中神经网络的层大小不起作用

我正在尝试使用OpenCV的神经网络:

ANN::ANN() {  // 4行1列,类型为32位短整型。  CvMat* neural_layers = cvCreateMat(4, 1, CV_32SC1);  cvSet1D(neural_layers, 0, cvScalar(2));   // 输入  cvSet1D(neural_layers, 1, cvScalar(30));  // 隐藏层  cvSet1D(neural_layers, 2, cvScalar(30));  // 隐藏层  cvSet1D(neural_layers, 3, cvScalar(1));   // 输出  // 使用Sigmoid函数初始化ANN。  this->network = new CvANN_MLP(neural_layers,                                 CvANN_MLP::SIGMOID_SYM, // 激活函数                                1,    // alpha = 1                                1);   // beta = 1}

训练参数:

void ANN::train() {  // 准备样本矩阵。  CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams();  // cvTermCriteria( CV_TERMCRIT_ITER + CV_TERMCRIT_EPS, 1000, 0.01 );  params.train_method = CvANN_MLP_TrainParams::BACKPROP;  params.bp_dw_scale = 0.01;  params.bp_moment_scale = 0.05;  // 终止条件。  params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,                                    100000,   //                                     0.1);  // 开始训练网络。  this->network->train(                    this->inputs,                    this->outputs,                    this->weights,                    0,          // 样本开始索引。                    params,     // 训练参数。                    1           // UPDATE_WEIGHTS                    );}

但是隐藏层的尺寸似乎完全不起作用,因为我将其从3改为30,结果完全没有变化

然后我改变了alpha和beta的值,但这也没有任何变化。

我的代码哪里出了问题?

==== 我的训练和测试样本: ====

y = cos(x) + sin(x)

-0.758732841028 41.0938207976   27.23675954231.15370020129   21.1456884544   38.8524658070.298333522748  37.4369795032   51.24493857111.8800004748    96.2375790658   44.2418473915-1.78419644641  80.3189155018   77.9060673705...

回答:

你的epsilon值可能过大,导致学习过程发散。我猜你现在设置的是0.1。尝试将epsilon设置为更小的值,例如0.0000001,0.000001,0.00001。较小的epsilon可能会导致收敛速度变慢,但至少你应该能看到进展。

顺便提一下,这里有一个关于在OpenCV中使用SVM和MLP的很棒的教程。 https://raw.github.com/bytefish/opencv/master/machinelearning/doc/machinelearning.pdf

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注