tf.data.Dataset.from_tensor_slices创建数据集报Unsupported object type float错误
报错原因
你遇到的报错核心是tf.data.Dataset.from_tensor_slices无法将混合类型的object类numpy数组转换为Tensor:
虽然train['email'].values被判定为字符串类型ndarray,但只要列中存在缺失值,pandas会自动插入float类型的NaN填充,此时整个数组的dtype会变为object而非纯字符串类型,TensorFlow识别到数组中混入了float类型的非法值,就会抛出对应错误。
你也可以同步排查label列是否存在空值或类型异常的情况,也可能触发同类报错。
解决方法
- 第一步:清理email列的异常值
先确认缺失值数量:
根据业务需求选择删除空值行或填充默认值:print(train['email'].isna().sum(), validation['email'].isna().sum())# 方案1:删除包含空email的行 train = train.dropna(subset=['email']).reset_index(drop=True) validation = validation.dropna(subset=['email']).reset_index(drop=True) # 方案2:用空字符串填充缺失的email值 train['email'] = train['email'].fillna('') validation['email'] = validation['email'].fillna('') - 第二步:强制转换为纯字符串类型,避免object类型残留
train['email'] = train['email'].astype(str) validation['email'] = validation['email'].astype(str)
完成上述操作后再执行原数据集构建代码即可正常运行。
内容的提问来源于stack exchange,提问作者Majd Alhafi
相关产品推荐
相关产品推荐

