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

Learning to rank算法TensorFlow报错:无法将NumPy数组转为Tensor(不支持int类型)

问题根因与解决方案

1. 列数据类型异常导致转换失败

读取csv后如果id_comm、id_huurder列存在空值/异常值,pandas会自动将整列设为object dtype,而非预期的数值类型,转换张量时就会触发Unsupported object type int报错。

  • 排查方法:执行print(df_succes[['id_comm', 'id_huurder']].dtypes)确认列类型
  • 修复代码:
# 强制转换为int类型,处理异常值
df_succes['id_comm'] = pd.to_numeric(df_succes['id_comm'], errors='coerce').fillna(0).astype(int)
df_succes['id_huurder'] = pd.to_numeric(df_succes['id_huurder'], errors='coerce').fillna(0).astype(int)

2. StringLookup层配置不匹配数值类型id

你用到的unique_user_ids和unique_movie_titles都是int类型,StringLookup层默认适配字符串输入,需要显式指定dtype:

# 用户嵌入部分修改
self.user_embeddings = tf.keras.Sequential([
  tf.keras.layers.StringLookup(
    vocabulary=unique_user_ids, mask_token=None, dtype=tf.int64),
  tf.keras.layers.Embedding(len(unique_user_ids) + 1, embedding_dimension)
])
# 商品嵌入部分同步修改
self.movie_embeddings = tf.keras.Sequential([
  tf.keras.layers.StringLookup(
    vocabulary=unique_movie_titles, mask_token=None, dtype=tf.int64),
  tf.keras.layers.Embedding(len(unique_movie_titles) + 1, embedding_dimension)
])

3. 输入格式不符合TFRS模型要求

MovielensModel的call方法要求输入是包含user_id、movie_title键的字典,但你原代码训练时直接传入了X_train张量,且没有对应user_rating标签字段,需要重构输入数据集:

# 拆分数据集时保留字段格式,不要提前转成无字段的张量
train_ds = tf.data.Dataset.from_tensor_slices({
    "user_id": X_train['id_huurder'].values,
    "movie_title": X_train['id_comm'].values,
    "user_rating": y_train.values
})
test_ds = tf.data.Dataset.from_tensor_slices({
    "user_id": X_test['id_huurder'].values,
    "movie_title": X_test['id_comm'].values,
    "user_rating": y_test.values
})
# 分批处理
train_ds = train_ds.batch(32)
test_ds = test_ds.batch(32)

4. 优化器参数错误

你设置的学习率为-0.1是非法值,会导致训练不收敛,修改为正的小数值:

model.compile(optimizer=tf.keras.optimizers.Adagrad(learning_rate=0.1))

5. 训练调用修改

直接传入构造好的数据集即可:

model.fit(train_ds, epochs=3, validation_data=test_ds)

内容的提问来源于stack exchange,提问作者Karin L

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:06:03