Tensorflow 2个字符串标签到one_hot。

问题描述 投票:1回答:1

我试图用字符串标签的形式来拟合一个模型。["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" 基于 这个

如果需要的话,我会把更多的代码贴出来。

python tensorflow2.0
1个回答
1
投票

1- 是否可以直接用 tensorflow 2 将这些标签转换为 one hot,或者输入应该是 INT?

2-如果是,是什么原因导致这个问题?

TensorFlow只支持数字指数。如果你查看 tf.one_hot事实上,你传递的是一个索引作为标签。我是通过这个找到这个信息的 Github问题

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

我没有看到一个简单的方法来解决这个问题。但如果你能在内存中拟合你的数据,我建议使用pandassklearn,并将这些数据转换为onehot编码。如果不能,你可能需要为你的数据创建一系列的特征列。比如说 这个 功能栏支持你需要实现的功能。

© www.soinside.com 2019 - 2024. All rights reserved.