我试图用字符串标签的形式来拟合一个模型。["aa", "aa", "bb", "bb", "bb", "cc"]
并想使用 tf.one_hot(labels, depth=3)
得到一个热向量,但我得到的错误。
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
并使用 os.environ["CUDA_VISIBLE_DEVICES"]="2"
基于 这个
如果需要的话,我会把更多的代码贴出来。
1- 是否可以直接用 tensorflow 2 将这些标签转换为 one hot,或者输入应该是 INT?
2-如果是,是什么原因导致这个问题?
TensorFlow只支持数字指数。如果你查看
tf.one_hot
事实上,你传递的是一个索引作为标签。我是通过这个找到这个信息的 Github问题
3-是否可以直接用字符串标签来拟合模型?
我没有看到一个简单的方法来解决这个问题。但如果你能在内存中拟合你的数据,我建议使用pandassklearn,并将这些数据转换为onehot编码。如果不能,你可能需要为你的数据创建一系列的特征列。比如说 这个 功能栏支持你需要实现的功能。