这看起来很简单,但我已经坚持了一段时间。我有一个列表,并且想要创建一个等于该列表中唯一项长度的变量。一个简单的例子如下:
def unique_zeros_tensor(arr):
uniq_items, items_idxs = tf.unique(tf.constant(arr))
return tf.Vector(tf.zeros([tf.size(uniq_items)]))
我收到错误消息,说初始值必须指定一个形状。
我也试过,tf.shape
,tf.zeros_like
,甚至tf.reduce_max(item_idxs)
都无济于事。我可以通过创建一个会话并运行tf.unique中的结果并使用那里的值来实现它,但这感觉就像是不好的做法,但如果我错了,请告诉我。
编辑 - 为常量添加形状没有帮助, 使用占位符代替tf.constant也没有帮助。
答案 0 :(得分:1)
在运行图形之前,变量需要基本上静态定义它们的大小。
但像tf.zeros等这样的东西是张量,在你实际运行图形之前它们确实没有值。
您需要确定一个大小,以使您的变量不会发生变化,或者每次更改大小时重建图形。
编辑:为了清楚起见,tf中依赖关系的顺序是: