加载ONNX CNTK C ++会引发异常

问题描述 投票:0回答:1

我有一个我在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);
}
cntk
1个回答
0
投票

最后我做了其他的解决方案我保存在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());
© www.soinside.com 2019 - 2024. All rights reserved.