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

Stack Overflow标签预测深度学习模型报错ValueError: invalid literal for int() with base 10: 'php'求助

问题根因

你报错的核心原因是tf.one_hot()要求输入的是整数类型的标签索引,而你直接传入了字符串形式的标签(比如'php'、'c'这些),无法直接转成整数做独热编码。另外你的代码还有一个参数使用错误也会导致后续报错。

完整修复步骤
  • 第一步:先把字符串标签映射为整数索引
    你需要先给所有唯一标签分配对应的数字ID,代码示例:
import pandas as pd
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# 生成标签到整数的映射字典
tag2id = {tag: idx for idx, tag in enumerate(data.tag_name.unique())}
# 将字符串标签转换为整数索引
y_labels = np.array([tag2id[tag] for tag in data.tag_name])
  • 第二步:修正独热编码和fit的参数
    你原来的validation_data=0.3是错误的,切分验证集比例要用validation_split参数,独热编码直接传入整数标签即可,不需要额外reshape:
model = Sequential()
model.add(Dense(16,activation='relu',input_shape = (384,))) #隐藏层
model.add(Dense(len(tag2id),activation='sigmoid')) #输出层

model.compile(optimizer='SGD',loss='binary_crossentropy',metrics=['accuracy'])
# 这里直接传转换好的整数标签做one_hot,用validation_split切30%验证集
model.fit(
    np.array(list_embedding),
    tf.one_hot(y_labels, depth=len(tag2id)),
    validation_split=0.3,
    epochs=20
)
可选优化点

如果你的每个帖子只对应一个标签,属于单标签分类场景,可以把输出层激活函数换成softmax,损失函数换成categorical_crossentropy,训练收敛速度会更快。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:15:08