keras - ValueError:未知层:带有 pyspark udf 的 CRF
问题描述
我用 CRF 层保存了 Keras 模型,如下所示:
model.save(modelName)
并将其加载如下:
model= load_model('model.h5',custom_objects={'CRF':CRF,'crf_loss':crf_loss,'crf_accuracy':crf_accuracy})
当我在 python 中使用模型进行预测时,它工作正常。但是,当我尝试加载在函数 predicts 中调用的模型以预测结果并将其调用为 pyspark 中的 udf 时,出现错误:
“ ValueError:未知层:CRF”
predict_skills = udf(lambda description: p.predict_s(description))
df_new=df_new.select('a')\
.withColumn("b", predict_s(col("a")))
为了使带有额外 CRF 层的 keras 在 pyspark 中工作,是否需要做任何额外的事情?
解决方案
这不能在 udf 之外完成!
这样做: 系列迭代器到系列迭代器
@pandas_udf("long")
def predict(iterator: Iterator[pd.Series]) -> Iterator[pd.Series]:
# Do initialization with a model
model = load_model('model.h5',custom_objects={'CRF':CRF,'crf_loss':crf_loss,'crf_accuracy':crf_accuracy})
for series in iterator:
# Use that model for whole iterator.
yield predict_with_model(series, model)
df.select(predict("value")).show()
推荐阅读
- laravel-8 - 在 Laravel 8 中安装 Jetstream 后出现错误
- c - googletest 与全局静态变量
- sql - 将 2 个选择查询合二为一
- elixir - 如何在 Elixir 的编译时指定模块实现?
- java - 无法构建 Appium 服务器,因为它无法找到 NodeInCurrentFileSystem
- git - git 在依赖于未合并分支的小分支上工作
- python - 将一段持续时间分成几行,最多不超过 24 小时
- algorithm - 什么是平凡和非平凡的启发式?
- vue.js - Vutify 列表组使父级可点击
- python - 通过 tags_metadata 字典定义 FastApi 中标签的顺序