【发布时间】:2021-07-14 14:12:50
【问题描述】:
下面是我传递给 keras Lambda 层的函数。
tf.cond() 的输出出现问题。它返回<unknown> 的形状。输入张量 (t) 和恒权张量的形状分别为 (None,6) 和 (6,)。当我在tf.cond() 之外添加这两个时,我得到一个形状为(None,6) 的张量,这就是我需要的。但是,当从 tf.cond() 中返回相同的添加操作时,我会得到一个形状为 <unknown> 的张量。
当此操作通过tf.cond() 进行时会发生什么变化。
def class_segmentation(t):
class_segments = tf.constant([0,0,1,1,2,2])
a = tf.math.segment_mean(t, class_segments, name=None)
b = tf.math.argmax(a)
left_weights = tf.constant([1.0,1.0,0.0,0.0,0.0,0.0])
middle_weights = tf.constant([0.0,0.0,1.0,1.0,0.0,0.0])
right_weights = tf.constant([0.0,0.0,0.0,0.0,1.0,1.0])
zero_weights = tf.constant([0.0,0.0,0.0,0.0,0.0,0.0])
c = tf.cond(tf.math.equal(b,0), lambda: tf.math.add(t, left_weights), lambda: zero_weights)
d = tf.cond(tf.math.equal(b,1), lambda: tf.math.add(t, middle_weights ), lambda: zero_weights)
e = tf.cond(tf.math.equal(b,2), lambda: tf.math.add(t, right_weights), lambda: zero_weights)
f = tf.math.add_n([c,d,e])
print("Tensor shape: ", f.shape) # returns "Unknown"
return f
【问题讨论】:
标签: keras conditional-statements tensorflow2.0