OpenCV 3.0 无法加载神经网络
OpenCV 3.0 Can't load neural network
我需要在OpenCV(3.0版)项目中使用神经网络。我已经创建并训练了神经网络,它可以工作,但如果我想从YML文件加载神经网络,则它无法预测。
这是我创建、训练和保存神经网络的代码:
FileStorage fs("nn.yml", FileStorage::WRITE);
int input_neurons = 7;
int hidden_neurons = 100;
int output_neurons = 5;
Ptr<TrainData> train_data = TrainData::loadFromCSV("data.csv", 10, 7, 12);
Ptr<ANN_MLP> neural_network = ANN_MLP::create();
neural_network->setTrainMethod(ANN_MLP::BACKPROP);
neural_network->setBackpropMomentumScale(0.1);
neural_network->setBackpropWeightScale(0.05);
neural_network->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER, (int)10000, 1e-6));
Mat layers = Mat(3, 1, CV_32SC1);
layers.row(0) = Scalar(input_neurons);
layers.row(1) = Scalar(hidden_neurons);
layers.row(2) = Scalar(output_neurons);
neural_network->setLayerSizes(layers);
neural_network->setActivationFunction(ANN_MLP::SIGMOID_SYM, 1, 1);
neural_network->train(train_data);
if (neural_network->isTrained()) {
neural_network->write(fs);
cout << "It's OK!" << endl;
}
但下次,如果我想从YML文件加载它:
Ptr<ANN_MLP> neural_network = Algorithm::load<ANN_MLP>("nn.yml", "neural_network");
我得到输出:
[-1.#IND,-1.#IND
[-1.#IND,1.0263158,1.02631581.0263158]
[1.0263158,1.0263158,102063158,10263158,102.63158]
[-1.#IND,-1.#IND
Ptr<ANN_MLP> neural_network = Algorithm::load<ANN_MLP>("nn.yml");
这一行导致我得到一个错误:
OpenCV错误:未指定的错误(节点既不是映射也不是空集合on),文件C:\builds\master_PackSlave-win64-vc12-shared\opencv\modules\core\src\persistence.cpp,第739行
我做错了什么?问题出在哪里?
您可以使用save
和load
,或者write
和read
,但不应将它们混合使用。
所以你要么需要做:
// Save
neural_network->save("nn.yml");
// Load
Ptr<ANN_MLP> nn = Algorithm::load<ANN_MLP>("nn.yml");
或:
// Write
neural_network->write(fs);
// Read
FileStorage ffs("nn.yml", FileStorage::READ);
Ptr<ANN_MLP> nn = Algorithm::read<ANN_MLP>(ffs.root());
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- std::原子加载和存储都需要吗
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 为什么加载SDF会导致Mobilizer创建闭环错误
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- 如何使用tinyxml2从XML加载父实体和子实体
- 如何在C++中使用pybind11加载一个pickle python列表
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 当我尝试加载内核模块时,如何修复C++中的这个 malloc() 错误?
- 树莓上的 Libtorch 无法加载 pt 文件,但在 ubuntu 上工作
- Python ctypes:不会按预期加载 dll
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 保存/加载大量短数组到二进制文件
- 神经网络不学习.卡在50%
- 为什么小型和大型加载的神经网络占用相同数量的 RAM?
- 无法使用 OpenCV 读取网络从咖啡加载数字训练的 Caffe 模型
- OpenCV 3.0 无法加载神经网络
- Mac OS X:观察网络流量(例如处理加载url操作在谷歌浏览器)