Python Tensorflow 2个字符串标签到一个\u热

Python Tensorflow 2个字符串标签到一个\u热,python,tensorflow2.0,Python,Tensorflow2.0,我试图用字符串标签来拟合模型,格式为[“aa”、“aa”、“bb”、“bb”、“bb”、“cc”],并希望使用tf.one_hot(标签,深度=3)来获取one hot向量,但我得到了错误: NotFoundError: Could not find valid device for node. Node:{{node OneHot}} All kernels registered for op OneHot : device='XLA_GPU'; TI in [DT_INT32, DT_U

我试图用字符串标签来拟合模型,格式为
[“aa”、“aa”、“bb”、“bb”、“bb”、“cc”]
,并希望使用
tf.one_hot(标签,深度=3)
来获取one hot向量,但我得到了错误:

NotFoundError: Could not find valid device for node.
Node:{{node OneHot}}
All kernels registered for op OneHot :
  device='XLA_GPU'; TI in [DT_INT32, DT_UINT8, DT_INT64]; T in [DT_FLOAT, DT_DOUBLE, DT_INT32, DT_UINT8, DT_INT16, ..., DT_UINT16, DT_COMPLEX128, DT_HALF, DT_UINT32, DT_UINT64]
  device='XLA_CPU'; TI in [DT_INT32, DT_UINT8, DT_INT64]; T in [DT_FLOAT, DT_DOUBLE, DT_INT32, DT_UINT8, DT_INT16, ..., DT_UINT16, DT_COMPLEX128, DT_HALF, DT_UINT32, DT_UINT64]
我的问题是:


1-是否可以使用tensorflow 2直接将此类标签转换为热标签,或者输入是否为
INT

2-如果是,是什么导致此问题

3-是否可以使用字符串标签直接拟合模型

额外资料:

我正在使用群集来训练和使用
GPU
,并使用基于


如果有必要,我会发布更多的代码

1-是否可以使用tensorflow 2直接将此类标签转换为一个热标签,或者输入是否为INT

2-如果是,是什么导致此问题

TensorFlow仅支持数字索引。如果您查看文档,它实际上是作为标签传递的索引。我通过这个找到了这个信息

3-是否可以使用字符串标签直接拟合模型

我不认为这是一个简单的出路。但如果你能将数据存储在内存中,我建议使用pandas/sklearn并将其转换为onehot编码。如果没有,您可能需要为数据创建一系列要素列。例如,“功能”列支持您需要实现的功能


谢谢你的回复,我是通过进一步阅读文献得到的。我将把这个留给以后的事情:1-1热向量用于分类交叉熵,整数标签用于稀疏分类交叉熵。我把我的标签改成整数,并和我的损失函数匹配,结果成功了。