python - 如何将回归输出保持在一个范围内
问题描述
我正在尝试为tensorflow
. 我的数据集由 1 到 80 岁的图像组成。我想将输出保持在这些值之间。基本上我可以在python中做到这一点:
if output > 80:
output = 80
elif output < 1:
output = 1
但我不能在tensorflow
. 我试过了:
one = tf.constant(1, dtype=tf.int32)
eighty = tf.constant(80, dtype=tf.int32)
output = tf.cond(tf.less(output, one), lambda: one, lambda: output)
output = tf.cond(tf.less(eighty, output), lambda: eighty, lambda: output)
它会引发一个很长的错误,但是,我想,这部分很重要:
ValueError: Shape must be rank 0 but is rank 2 for 'cond_1/Switch' (op: 'Switch') with input shapes: [?,1], [?,1].
这说得通。我正在尝试比较一个常量和一个列表(或类似列表的东西)。我怎样才能解决这个问题?
解决方案
您可以尝试使用tf.clip_by_value
:
output = tf.clip_by_value(output, clip_value_min=1, clip_value_max=80)