如何在Python中将TensorFlow神经网络模型保存为RDS文件?
如何在Python中将TensorFlow/Keras模型保存为RDS文件
你遇到的错误是因为rpy2默认没有实现Keras Sequential模型从Python到R对象的转换逻辑。下面提供两种可行的解决方案:
方法一:通过Keras HDF5格式中转(推荐)
这种方法先将Python模型保存为Keras原生的HDF5格式,再通过rpy2调用R的keras库加载模型并转存为RDS,步骤简单且兼容性好:
- 先在Python中保存Keras模型为HDF5文件:
model.save("my_model.h5")
- 使用rpy2调用R代码完成加载和转存:
import rpy2.robjects as robjects from rpy2.robjects.packages import importr # 导入R的keras包(需确保R环境已安装keras并配置好TensorFlow后端) keras = importr("keras") saveRDS = robjects.r["saveRDS"] # 在R环境中加载HDF5模型,再保存为RDS r_model = keras.load_model("my_model.h5") saveRDS(r_model, "model.rds")
方法二:传递模型结构与权重重建后保存
如果不想生成中间HDF5文件,可以直接导出模型的结构和权重,在R中重建模型后再保存为RDS:
import rpy2.robjects as robjects from rpy2.robjects import numpy2ri from rpy2.robjects.packages import importr import json # 启用numpy数组到R对象的自动转换 numpy2ri.activate() keras = importr("keras") saveRDS = robjects.r["saveRDS"] # 从Python模型导出结构(JSON)和权重(numpy数组) model_json = model.to_json() weights = model.get_weights() # 将JSON结构转为R字符对象 r_model_json = robjects.StrVector([model_json]) # 在R中重建模型并设置权重 r_model = keras.model_from_json(r_model_json[0]) r_model$set_weights(weights) # 保存为RDS文件 saveRDS(r_model, "model.rds")
注意事项
- 确保R环境的
keras包版本与Python端的Keras/TensorFlow版本尽量匹配,避免因版本差异导致模型加载失败 - 若R环境未配置keras,需先在R中执行
install.packages("keras")和keras::install_keras()完成环境配置
内容的提问来源于stack exchange,提问作者Shay
相关产品推荐
相关产品推荐

