2016-03-13 50 views
0

我試圖用OpenCV 3.1.0實現神經網絡。當預測我得到一個具有-1。#QNAN值的向量時。我究竟做錯了什麼?使用opencv 3.1.0的神經網絡

// train 
Ptr<ANN_MLP> ann = ml::ANN_MLP::create(); 
Mat layers(1, 3, CV_32F); 
layers.at<float>(0) = features.cols; 
layers.at<float>(1) = nlayers; 
layers.at<float>(2) = numLabels; 
ann->setActivationFunction(ANN_MLP::SIGMOID_SYM); 
ann->setLayerSizes(layers); 
Mat trainClasses; 
trainClasses.create(features.rows, numLabels, CV_32F); 
for (int i = 0; i < trainClasses.rows; i++) 
{ 
    for (int k = 0; k < trainClasses.cols; k++) 
    { 
     if (k == labels[i]) 
      trainClasses.at<float>(i, k) = 1; 
     else 
      trainClasses.at<float>(i, k) = 0; 
    } 

} 
Mat weights(1, features.rows, CV_32F, Scalar::all(1)); 
Ptr<TrainData> tdata = TrainData::create(features, ROW_SAMPLE, 
trainClasses, Mat(), Mat(), weights, Mat()); 
ann->train(tdata); 

// predict 
Mat output(1, numLabels, CV_32F); 
ann->predict(test_data, output); 
+0

我有同樣的問題,試試這個http://stackoverflow.com/a/36885722/6256956 – Theese

回答

-1

我新的神經網絡,但我想你的輸入層應該有神經元等於整體屬性的大小。

假設您有5張10 * 10大小的訓練圖像,那麼您應該爲每個像素輸入神經元。也就是說,5 * 10 * 10 = 500。

+0

它應該是一個例子的屬性數量。 –