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

PySpark加载保存的MultiLayerPerceptronClassifier报layers无默认值如何解决

问题原因

该报错是Spark 3.1.2及更低版本的已知缺陷:MultilayerPerceptronClassifier(MLPC)的layers参数没有被正确写入模型持久化的元数据中。直接运行Pipeline时参数保存在内存中不会丢失,所以运行正常;模型保存到磁盘再重新加载时,系统读取不到layers参数就会抛出该错误。

解决方案
  • 方案1:升级Spark版本到3.2.0及以上,该版本官方已修复MLPC模型参数持久化的缺陷,升级后重新训练保存模型即可正常加载使用。
  • 方案2:如果无法升级Spark版本,可在加载Pipeline模型后手动给MLPC阶段补设layers参数,代码示例如下:
from pyspark.ml import PipelineModel

saved_model = "/home/user/Desktop/algorithms/mlpc_model_8979"
read_model = PipelineModel.load(saved_model)

# 替换索引为你训练时MLPC在Pipeline中的实际位置,示例为最后一个阶段
mlpc_stage = read_model.stages[-1]
# 填入训练时设置的layers参数值即可
mlpc_stage.set(mlpc_stage.layers, [200, 30, 10])

# 再执行预测不会报错
pred = read_model.transform(df)
  • 方案3:如果你的Pipeline只有MLPC一个阶段,可直接单独保存、加载MLPC模型,无需通过Pipeline封装,也可规避该问题:
# 训练完成后单独保存模型
mlpc_model.save("mlpc_single_model")
# 加载时直接调用对应类的load方法
from pyspark.ml.classification import MultilayerPerceptronClassificationModel
read_mlpc = MultilayerPerceptronClassificationModel.load("mlpc_single_model")

内容的提问来源于stack exchange,提问作者Laenka-Oss

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:09:04