【问题标题】:How to save CNTK model as ONNX in C#如何在 C# 中将 CNTK 模型保存为 ONNX
【发布时间】:2021-02-26 22:12:15
【问题描述】:

我知道保存训练模型的唯一功能是 trainer.SaveCheckpoint 可以保存 CNTK 模型,但我找不到如何在 C# 中将模型保存为 ONNX 格式

在此处的文档站点上https://docs.microsoft.com/en-us/cognitive-toolkit/serialization

我只能找到将它保存为ONNX的python方法

z.save("myModel.onnx", format=C.ModelFormat.ONNX)

但这在 C# 中不起作用

【问题讨论】:

    标签: c# cntk onnx


    【解决方案1】:

    .NET Managed library 的Function 对象有一个私有方法_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 });
    

    【讨论】:

      【解决方案2】:

      您可以考虑使用微软的MMdnn 将您的 CNTK 模型转换为 onnx。

      MMdnn 是一个全面的跨框架工具,用于转换、可视化和诊断深度学习 (DL) 模型。 “MM”代表模型管理,“dnn”是深度神经网络的缩写。

      【讨论】:

      • 谢谢!但这需要 Python 而我不懂 Python。我想用一个独立的应用程序或 C# 来做到这一点
      • 很抱歉,没有意识到您的要求。另外,在机器学习领域中找到与 python 无关的东西可能有点困难。
      猜你喜欢
      • 2020-03-09
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多