如何在 C# 中将 CNTK 模型保存为 ONNX
How to save CNTK model as ONNX in C#
我知道保存训练模型的唯一函数是 trainer.SaveCheckpoint,它可以保存 CNTK 模型,但我找不到如何在 C# 中将模型保存为 ONNX 格式
在此处的文档站点上 https://docs.microsoft.com/en-us/cognitive-toolkit/serialization
我只能找到python方法将其保存为ONNX
z.save("myModel.onnx", 格式=C.ModelFormat.ONNX)
但这在 C# 中不起作用
您可以考虑使用 Microsoft 的 MMdnn 将您的 CNTK 模型转换为 onnx。
MMdnn 是一个全面的跨框架工具,用于转换、可视化和诊断深度学习 (DL) 模型。 “MM”代表模型管理,“dnn”是深度神经网络的首字母缩写。
Function
.NET Managed library 的对象有一个私有方法 _Save
,签名如下:
private void _Save(string filepath, ModelFormat format)
你可以通过反射来执行它:
string cntkFilePath = "myModel.model";
string onnxFilePath = "myModel.onnx";
Function model = Function.Load(cntkFilePath, DeviceDescriptor.CPUDevice, ModelFormat.CNTKv2);
MethodInfo saveMethod = typeof(Function).GetMethod(
"_Save",
BindingFlags.NonPublic | BindingFlags.Instance,
null,
new[] { typeof(string), typeof(ModelFormat) },
null);
saveMethod?.Invoke(model, new object[] { onnxFilePath, ModelFormat.ONNX });
我知道保存训练模型的唯一函数是 trainer.SaveCheckpoint,它可以保存 CNTK 模型,但我找不到如何在 C# 中将模型保存为 ONNX 格式
在此处的文档站点上 https://docs.microsoft.com/en-us/cognitive-toolkit/serialization
我只能找到python方法将其保存为ONNX
z.save("myModel.onnx", 格式=C.ModelFormat.ONNX)
但这在 C# 中不起作用
您可以考虑使用 Microsoft 的 MMdnn 将您的 CNTK 模型转换为 onnx。
MMdnn 是一个全面的跨框架工具,用于转换、可视化和诊断深度学习 (DL) 模型。 “MM”代表模型管理,“dnn”是深度神经网络的首字母缩写。
Function
.NET Managed library 的对象有一个私有方法 _Save
,签名如下:
private void _Save(string filepath, ModelFormat format)
你可以通过反射来执行它:
string cntkFilePath = "myModel.model";
string onnxFilePath = "myModel.onnx";
Function model = Function.Load(cntkFilePath, DeviceDescriptor.CPUDevice, ModelFormat.CNTKv2);
MethodInfo saveMethod = typeof(Function).GetMethod(
"_Save",
BindingFlags.NonPublic | BindingFlags.Instance,
null,
new[] { typeof(string), typeof(ModelFormat) },
null);
saveMethod?.Invoke(model, new object[] { onnxFilePath, ModelFormat.ONNX });