Загрузка ONNX CNTK C++ вызывает исключение

У меня есть один файл, который я создал в Matlab. Я использовал это очень хорошо в загрузке Python:

import cntk as C
z = C.Function.load("Net.onnx", format=C.ModelFormat.ONNX)

в с ++ у меня есть исключение Selected CPU as the process wide default device.

О том, чтобы бросить исключение:

'Gemm: неправильная форма, входные данные A и B должны иметь ранг =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);
}

1 ответ

Наконец, я принял другое решение, которое я сохранил в 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());
Другие вопросы по тегам