首页 > 解决方案 > Tensorflow:具有可变长度的 OneHot 编码

问题描述

我需要用 TensorFlow 对一些位置进行 onehot 编码。

但是,输入序列的长度(因此depth-argumentin tf.one_hot)是 None 因为我使用可变大小的输入。

这会引发以下错误:

“ValueError:试图将'深度'转换为张量并失败。错误:不支持无值。”。

有解决方法吗?

我已经尝试在给定序列的每个单独调用(通过具有一些任意初始化值的变量)之前将深度设置为正确的序列长度,但是由于计算图已经构建,更改不会生效并且深度停留在初始化值。

标签: pythontensorflowmachine-learningone-hot-encoding

解决方案


这就是我解决问题的方法:问题是我使用的是别人的代码,而depthin 的参数tf.one_hot来自someTensor.get_shape().as_list()[1]. 这里的问题是,如果 的形状someTensor未知,则参数是 Python-None这不是tf.one_hot. 但是,使用tf.shape(someTensor)[1]解决了这个问题,因为它返回一个形状未知的 Dimension 而不是 Python- None。具有未知形状的 Dimension 是 的有效depth参数tf.one_hot


推荐阅读