Загрузка 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());