Ich habe versucht, die Trainingsparameter zu ändern, aber das hat nicht funktioniert irgendetwas tun. Ich habe versucht, einen kleineren Datensatz mit 100 Einheiten zu verarbeiten, und in diesem Satz schaffe ich es, einige Werte in der Ausgabeebene zu erhalten, aber die meisten davon sind immer noch Nan. Ich kann den Grund dafür einfach nicht finden. Hier ist der Code für das ML-Modell:
Code: Select all
cv::Ptr mlp = cv::ml::ANN_MLP::create();
mlp->setActivationFunction(cv::ml::ANN_MLP::SIGMOID_SYM, 1, 1);
int inputLayerSize = imagesData[0].total();
if (inputLayerSize > std::numeric_limits::max()) {
throw std::overflow_error("inputLayerSize exceeds the maximum value for int");
}
size_t hiddenLayerSize = 100;
size_t outputLayerSize = 10;
cv::Mat layers = (cv::Mat_(3, 1)setTermCriteria(termCrit);
mlp->setTrainMethod(cv::ml::ANN_MLP::BACKPROP, 0.001, 0.1);
mlp->train(trainingData, cv::ml::ROW_SAMPLE, labelData);