TensorFlow文本分类模型无法基于Polars DataFrame预测求助
问题:TensorFlow文本分类模型Polars DataFrame预测失败,Pandas正常
问题背景
训练了一个用于文本分类的TensorFlow模型,基于Pandas DataFrame可正常完成预测,但使用Polars DataFrame调用predict时触发类型错误。
相关代码
导入依赖与加载模型
import pandas as pd import polars as pl import joblib from tensorflow.keras.models import load_model loaded_model = load_model('model.keras') load_Le = joblib.load('label_encoder.joblib')
Pandas DataFrame预测(正常运行)
text = "some example text" df = pd.DataFrame({"Coment":[text]}) predict = loaded_model.predict(df["Coment"])
Polars DataFrame预测(报错)
text = "some example text" df = pl.DataFrame({"Coment":[text]}) predict = loaded_model.predict(df["Coment"])
模型保存前的推理模型构建代码
inputs = keras.Input(shape=(1,), dtype="string") processed_inputs = text_vectorization(inputs) outputs = model(processed_inputs) inference_model = keras.Model(inputs, outputs) inference_model.save('model.keras')
报错信息
TypeError: cannot convert the argument type_value: String to a TensorFlow Dtype.
解决建议
方法1:将Polars Series转换为NumPy数组或Python列表
TensorFlow对Polars Series的类型适配不完善,显式转换为NumPy数组或列表即可兼容:
text = "some example text" df = pl.DataFrame({"Coment":[text]}) # 转换为NumPy数组 predict = loaded_model.predict(df["Coment"].to_numpy()) # 或转换为Python列表 predict = loaded_model.predict(df["Coment"].to_list())
方法2:将Polars DataFrame转换为Pandas DataFrame
借助Pandas与TensorFlow的良好兼容性,先转成Pandas DataFrame再取列:
text = "some example text" df = pl.DataFrame({"Coment":[text]}) predict = loaded_model.predict(df.to_pandas()["Coment"])
原因说明
TensorFlow的输入处理逻辑对Pandas Series有专门的类型适配逻辑,但目前尚未完全支持Polars的原生数据类型,因此需要显式转换数据格式来规避类型识别错误。
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

