You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将R(含mlr3框架)训练的机器学习模型转换为ONNX格式?

将R中训练的机器学习模型转换为ONNX格式的可行方案

结论

R中训练的模型(包括mlr3框架训练的)可以转换为ONNX格式,已有成熟工具链支持这类转换。

mlr3模型的转换步骤

mlr3本身没有内置ONNX导出功能,但可以通过以下路径实现:

  1. 提取mlr3训练后的原生模型:mlr3的learner训练完成后,可通过learner$model获取底层R包的模型实例(比如用lrn("classif.rpart")训练后得到的rpart模型)
  2. 使用R的onnx包或跨语言工具转换:
    • 对于传统机器学习模型(决策树、随机森林、线性模型等),可以用onnx包直接转换,或通过reticulate调用Python的skl2onnx(需确保模型结构与scikit-learn兼容)
    • 示例代码(rpart决策树转ONNX):
      library(mlr3)
      library(rpart)
      library(onnx)
      
      # 训练mlr3模型
      task <- tsk("iris")
      learner <- lrn("classif.rpart")
      learner$train(task)
      rpart_model <- learner$model
      
      # 准备输入数据模板
      test_input <- as.matrix(iris[, 1:4])
      
      # 转换并保存ONNX模型
      onnx_obj <- convert_to_onnx(
        model = rpart_model,
        input_data = test_input,
        input_names = colnames(test_input),
        output_names = "prediction"
      )
      save_model(onnx_obj, "iris_rpart.onnx")
      
    • 复杂模型可先导出为PMML格式,再通过pmml2onnx工具转换为ONNX。

替代R包的直接转换方案

若mlr3的流程繁琐,可选择原生支持ONNX导出的R包:

  • torch:训练的深度学习模型可直接用torch::export_onnx()导出
  • parsnip + tidymodels:配合onnx包或skl2onnx实现传统模型转换
  • xgboost:训练的模型可导出为原生格式后,用Python的onnxmltools转换为ONNX

关键注意事项

  • 并非所有R模型都能完美转换,优先选择ONNX官方支持的模型类型(线性模型、树模型、常见深度学习模型)
  • 转换前确保输入数据的结构、类型与训练时一致,避免兼容性问题
  • 转换后用ONNX Runtime加载模型,验证预测结果与原R模型一致

内容的提问来源于stack exchange,提问作者DuesserBaest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 16:22:45