gpt4 book ai didi

python - Tensorflow tf.size 不适用于 tf.unique 的动态长度张量

转载 作者:太空宇宙 更新时间:2023-11-03 15:29:58 24 4
gpt4 key购买 nike

这看起来很简单,但我已经坚持了一段时间了。我有一个列表,并且想要创建一个等于该列表中唯一项目的长度的变量。一个简单的例子如下所示:

def unique_zeros_tensor(arr):
uniq_items, items_idxs = tf.unique(tf.constant(arr))
return tf.Vector(tf.zeros([tf.size(uniq_items)]))

我收到一条错误消息,指出初始值必须指定形状。

我也尝试过,tf.shapetf.zeros_like,甚至tf.reduce_max(item_idxs)都无济于事。我可以通过创建一个 session 并运行 tf.unique 的结果并使用其中的值来做到这一点,但这感觉是不好的做法,但如果我错了,请告诉我。

编辑-为常数添加形状没有帮助,使用占位符代替 tf.constant 也没有帮助。

最佳答案

在运行图表之前,变量的大小需要基本上静态定义。

但是像 tf.zeros 等都是张量,在您实际运行图表之前它们并不真正具有值。

您要么需要计算出一个大小以使变量不发生变化,要么在每次大小发生变化时重建图表。

编辑:为了清楚起见,tf 中的依赖关系顺序是:

  • 首先构建一个图表。您不需要 session 来构建图表。您可以在此处静态定义变量大小
  • 然后您可以从该图表创建一个或多个 session 。所有这些 session 中的变量都可能具有不同的值,但由于是从同一个图表创建的,因此所有 session 都将具有相同的形状/尺寸。

关于python - Tensorflow tf.size 不适用于 tf.unique 的动态长度张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42958531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com