我有一个我在matlab中创建的文件。我在python load中使用得非常好:
import cntk as C
z = C.Function.load("Net.onnx", format=C.ModelFormat.ONNX)
在c ++我有异常Selected CPU as the process wide default device.
即将抛出异常:
'Gemm:形状无效,输入A和B预计为rank = 2矩阵'
我使用了导入的nuget:CNTK.CPUOnly CNTK.Deps.MKL CNTK.Deps.OpenCV.Zip
#include <stdio.h>
#include "CNTKLibrary.h"
void main(){
std::wstring modelFile(L"Net.onnx");
//line crash
CNTK::FunctionPtr modelFunc = CNTK::Function::Load(modelFile, CNTK::DeviceDescriptor::CPUDevice(), CNTK::ModelFormat::ONNX);
}
最后我做了其他的解决方案我保存在python模型cntk比从c ++以cntk格式加载它(原始模型从matlab导出到onnx很长的路上)
python代码
import cntk as C
z = C.Function.load("Net.onnx", format=C.ModelFormat.ONNX)
z.save(os.path.join("folder", "net" + ".dnn"))
c ++加载
#include "CNTKLibrary.h"
std::wstring modelFile(L"net.dnn");
CNTK::FunctionPtr modelFunc = CNTK::Function::Load(modelFile, CNTK::DeviceDescriptor::CPUDevice());