参考 Tensorflow 中未确定的占位符大小?
Referring to Undetermined Placeholder Size In Tensorflow?
在某些情况下,我需要在我的模型输出和常量之间进行逐元素比较。但是,模型的输出大小取决于占位符,而且似乎很难引用相同大小的常量。
第一次尝试以某种方式生成标量值而不是进行元素运算:
tf.less(y,tf.constant(k,dtype=tf.float32))
这第二次尝试具有元素行为,但是是一个拼凑:
tf.less(y,tf.constant(k,shape= [<INT_GREATER_THAN_BATCHSIZE>],dtype=tf.float32))
是否有一种简洁的方法来引用图中占位符的尚未确定的大小?
引用(动态大小的)张量形状的最简单方法是使用 tf.shape(x)
操作,它在运行时生成包含张量真实形状的整数向量 x
.
请注意,tf.constant()
不接受动态形状作为参数——因为那样它就不是常量了!——但类似的 tf.fill()
op 可以。
因此你可以这样写:
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))
...但不清楚为什么这对您不起作用。
在某些情况下,我需要在我的模型输出和常量之间进行逐元素比较。但是,模型的输出大小取决于占位符,而且似乎很难引用相同大小的常量。
第一次尝试以某种方式生成标量值而不是进行元素运算:
tf.less(y,tf.constant(k,dtype=tf.float32))
这第二次尝试具有元素行为,但是是一个拼凑:
tf.less(y,tf.constant(k,shape= [<INT_GREATER_THAN_BATCHSIZE>],dtype=tf.float32))
是否有一种简洁的方法来引用图中占位符的尚未确定的大小?
引用(动态大小的)张量形状的最简单方法是使用 tf.shape(x)
操作,它在运行时生成包含张量真实形状的整数向量 x
.
请注意,tf.constant()
不接受动态形状作为参数——因为那样它就不是常量了!——但类似的 tf.fill()
op 可以。
因此你可以这样写:
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))
...但不清楚为什么这对您不起作用。