python - Tensorflow:具有可变长度的 OneHot 编码
问题描述
我需要用 TensorFlow 对一些位置进行 onehot 编码。
但是,输入序列的长度(因此depth-argument
in tf.one_hot
)是 None 因为我使用可变大小的输入。
这会引发以下错误:
“ValueError:试图将'深度'转换为张量并失败。错误:不支持无值。”。
有解决方法吗?
我已经尝试在给定序列的每个单独调用(通过具有一些任意初始化值的变量)之前将深度设置为正确的序列长度,但是由于计算图已经构建,更改不会生效并且深度停留在初始化值。
解决方案
这就是我解决问题的方法:问题是我使用的是别人的代码,而depth
in 的参数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
。
推荐阅读
- javascript - 在后面的代码中将 JS 参数传递给 c# 函数-.net
- javascript - 无法读取 Express js 中未定义的属性“状态”
- json - 如何使用字符串以角度搜索 json 对象?
- android - WorkManager NetworkType.CONNECTED 在中国防火墙后面不起作用
- html - 如何设置可以在烧瓶中上传的文件数
- mapbox - Mapbox 更改单个兴趣点的标签
- c - 如何更改 CMake 链接顺序?
- .net-core - 旧版本的 appsettings.json 包含在已编译的 .NET Core 应用程序中
- oracle - Oracle,用于带有动态表的 cicle
- python - 重量不能保存在备份文件夹中。[Yolo,暗网]