参考Tensorflow中未确定的占位符大小?

时间:2016-05-22 22:21:15

标签: tensorflow

有一种情况我需要在模型的输出和常量之间进行元素比较。但是,模型的输出具有取决于占位符的大小,并且似乎很难引用相同大小的常量。

第一次尝试以某种方式产生标量值而不是元素操作:

tf.less(y,tf.constant(k,dtype=tf.float32))

这第二次尝试具有元素行为,但是是一个kludge:

 tf.less(y,tf.constant(k,shape= [<INT_GREATER_THAN_BATCHSIZE>],dtype=tf.float32))

是否有一种干净的方式来引用图中占位符尚未确定的大小?

1 个答案:

答案 0 :(得分:1)

引用(动态大小)张量形状的最简单方法是使用tf.shape(x) op,它在运行时产生一个包含张量x的真实形状的整数向量。

请注意tf.constant()不接受动态形状作为参数 - 因为它不会是常数! - 但类似的tf.fill()操作会这样做。

因此你可以写:

p = tf.placeholder(..., shape=[None])
# ...
result = tf.less(y, tf.fill(tf.shape(p), tf.constant(k, dtype=tf.float32)))

PS。请注意,如果k是标量,则tf.less() op 广播k的形状以匹配y,以下内容应该有效:

tf.less(y, tf.constant(k, dtype=tf.float32))

......但不清楚为什么不适合你。