我用CRF层保存了Keras模型如下:
model.save(modelName)并按以下方式加载:
model= load_model('model.h5',custom_objects={'CRF':CRF,'crf_loss':crf_loss,'crf_accuracy':crf_accuracy})当我使用模型在python中进行预测时,它工作得很好。但是,当我试图加载函数中调用的模型时,可以预测结果,并将其称为火花放电中的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层的角点在火花放电中工作,需要做什么额外的事情吗?
发布于 2021-08-31 14:40:17
这不能在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()https://stackoverflow.com/questions/65422455
复制相似问题